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

时间:2015-12-07 14:21:01

标签: 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;

我尝试更改与列名不同的参数名称。然后它也没有用。 我尝试过匿名阻止。我无法找到问题。请帮助我这方面。 谢谢!

1 个答案:

答案 0 :(得分:3)

为参数提供与表列相同的名称是一种不好的做法。

所以你应该改变它:

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;

因为目前,很有可能,Oracle将其理解为列名,只是从此列更新列到值(根本没有意义)