2012-04-05 20 views
28

que tienen este procedimiento:Llamar a un procedimiento almacenado en Oracle con IN y OUT parámetros

CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER) 
AS BEGIN 
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr; 
END; 

Así que cuando lo ejecuto como esto se vuelve absolutamente nada:

DECLARE 
    amount NUMBER; 
BEGIN 
    PROC1(1000001, amount); 
    dbms_output.put_line(amount); 
END; 

Por cierto yo uso DreamCoder for Oráculo. ¿Hay algún problema con el procedimiento en sí o con la forma en que lo llamo? Hay una entrada en la tabla FACTURA con INVOICE_NR igual a 1000001.

+2

Si ejecuta "begin dbms_output.put_line ('output test') end;" ¿Ves la salida? Este procedimiento y forma de llamarlo es totalmente correcto. – arturro

+0

Lo manejo de esta manera, pero no veo el resultado. ¿Es posible que DreamCoder no muestre la salida de put_line()? – RegedUser00x

+0

No, lo intenté con'BEGIN dbms_output.put_line ('hi'); END; 'y tampoco muestra nada. – RegedUser00x

Respuesta

1

Vaya a la Herramienta de menú -> Salida SQL, ejecute la instrucción PL/SQL, , la salida se mostrará en el panel Salida de SQL.

34

Si configura la salida del servidor en modo ON antes de todo el código, funciona; de lo contrario, put_line() no funcionará. ¡Intentalo!

El código es,

set serveroutput on; 
CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER) 
AS BEGIN 
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr; 
END; 

Y a continuación, llamar a la función ya que es:

DECLARE 
amount NUMBER; 
BEGIN 
PROC1(1000001, amount); 
dbms_output.put_line(amount); 
END; 
2

que tenía el mismo problem.I utiliza un disparador, y en ese gatillo me llama un procedimiento que calculan algunos valores en 2 variables OUT. Cuando intenté imprimir el resultado en el cuerpo del disparador, nada en la pantalla, pero luego resolví este problema haciendo funcionar 2 variables locales, calculo lo que necesito con ellas y, finalmente, copio esas variables en sus variables de procedimiento OUT. Espero, será útil, ¡éxito!

Cuestiones relacionadas