Sql 在Oracle中使用in和OUT参数调用存储过程

Sql 在Oracle中使用in和OUT参数调用存储过程,sql,oracle11g,Sql,Oracle11g,我有以下程序: CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER) AS BEGIN SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr; END; 因此,当我这样运行它时,它完全不会返回任何结果: DECLARE amount NUMBER; BEGIN PROC1(1000001, amount);

我有以下程序:

CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER)
AS BEGIN
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr;
END;
因此,当我这样运行它时,它完全不会返回任何结果:

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

顺便说一句,我使用Oracle的DreamCoder。程序本身或我称之为程序的方式有问题吗?发票表中有一个发票编号等于1000001的条目。

进入菜单工具->SQL输出,运行PL/SQL语句,
输出将显示在SQL输出面板上

如果在完成整个代码之前将服务器输出设置为ON模式,则它可以工作,否则put_line()将无法工作。试试看

代码是

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;
然后按原样调用函数:

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

我也有同样的问题。我使用了一个触发器,在该触发器中我调用了一个过程,该过程将一些值计算为两个OUT变量。当我试图在触发器主体中打印结果时,屏幕上没有显示任何内容。但后来我解决了这个问题,在一个函数中创建了两个局部变量,计算了我需要的变量,最后,将这些变量复制到您的OUT过程变量中。我希望它将是有用的和成功的

如果运行“begindbms\u output.put\u line('output test')end”,您看到输出了吗?这个过程和调用它的方法是完全正确的。我这样运行它,但是我没有看到输出。有没有可能DreamCoder没有显示put_line()的输出?没有,我尝试了
BEGIN dbms_output.put_line('hi');结束也没有显示任何内容。同样适用于.NET:当我从.NET调用Oracle procs时,除非我选择进入局部变量,然后将局部变量值传递给输出变量,否则返回null。