oracle 存储过程中的更新语句不起作用

use*_*647 2 oracle stored-procedures

我在 oracle 存储过程中有一个简单的更新语句。它成功执行但不更新表。

CREATE OR REPLACE PROCEDURE UpdateSourceLog
( SourceLogId IN NUMBER, TotalRowCount IN INT,Status IN VARCHAR)

AS
BEGIN
        UPDATE  SourceLog
        SET     Status = Status,
                TotalRowCount = TotalRowCount,
                EndTime = SYSDATE
        WHERE   SourceLogId = SourceLogId;
        COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

我尝试更改与列名不同的参数名称。然后它也不起作用。我试过匿名块。我无法找出问题所在。请在这方面帮助我。谢谢!

Tat*_*ana 5

给参数赋予与表列相同的名称是一种不好的做法。

所以你应该改变它:

CREATE OR REPLACE PROCEDURE UpdateSourceLog
( p_SourceLogId IN NUMBER, p_TotalRowCount IN INT,p_status IN VARCHAR)

AS
BEGIN
        UPDATE  SourceLog
        SET     Status = p_status,
                TotalRowCount = p_TotalRowCount,
                EndTime = SYSDATE
        WHERE   SourceLogId = p_SourceLogId;
        COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

因为就目前而言,Oracle 很可能将其理解为列名,并且只是将列更新为该列中的值(完全没有意义)