Oracle Update并在单个查询中选择

时间:2017-06-13 20:33:33

标签: oracle

我正在使用供应商的数据库,我需要增加一个值并返回它。我有正确的命令,它更新表,但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;

1 个答案:

答案 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;

当然,如果您将更新的值作为参数发送,它将是一个更强大的解决方案,这只是最小的方法。