我正在使用供应商的数据库,我需要增加一个值并返回它。我有正确的命令,它更新表,但oracle开发人员的输出只是说“PL / SQL过程成功完成”。如何返回NewReceiptNumber?
DECLARE
NewReceiptNumber int;
BEGIN
UPDATE SYSCODES
SET (VAR_VALUE) = VAR_VALUE+1
WHERE VAR_NAME='LAST_RCPT'
RETURNING VAR_VALUE INTO NewReceiptNumber;
END;
答案 0 :(得分:2)
您只是在那里描绘一个匿名阻止,在您必须使用的代码中查看NewReceiptNumber
的值:
dbms_output.put_line(NewReceiptNumber)
。
如:
DECLARE
NewReceiptNumber int;
BEGIN
UPDATE SYSCODES
SET (VAR_VALUE) = VAR_VALUE+1
WHERE VAR_NAME='LAST_RCPT'
RETURNING VAR_VALUE INTO NewReceiptNumber;
dbms_output.put_line(NewReceiptNumber);
END;
但是如果您打算将此值实际返回到另一个过程或来自前端的调用,则必须声明一个存储过程并在该声明中指示您的输出参数,如:
CREATE OR REPLACE PROCEDURE my_proc(newreceiptnumber out INT) AS
BEGIN
UPDATE syscodes
SET (var_value) = var_value+1
WHERE var_name='LAST_RCPT'
RETURNING var_value INTO newreceiptnumber;
END my_proc;
当然,如果您将更新的值作为参数发送,它将是一个更强大的解决方案,这只是最小的方法。