我在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;
我尝试更改与列名不同的参数名称。然后它也没有用。 我尝试过匿名阻止。我无法找到问题。请帮助我这方面。 谢谢!
答案 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将其理解为列名,只是从此列更新列到值(根本没有意义)