我有这个程序:
CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER)
AS BEGIN
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr;
END;
Run Code Online (Sandbox Code Playgroud)
所以,当我像这样运行时,它绝对没有返回:
DECLARE
amount NUMBER;
BEGIN
PROC1(1000001, amount);
dbms_output.put_line(amount);
END;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我使用DreamCoder for Oracle.程序本身或我称之为程序有问题吗?INVOICE表中有一个条目,INVOICE_NR等于1000001.
小智 50
如果在整个代码之前将服务器输出设置为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;
Run Code Online (Sandbox Code Playgroud)
然后按原样调用该函数:
DECLARE
amount NUMBER;
BEGIN
PROC1(1000001, amount);
dbms_output.put_line(amount);
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
354918 次 |
| 最近记录: |