Oracle PL / SQL中的字符错误无效

时间:2014-04-25 16:56:33

标签: sql oracle plsql

我在PL / SQL中尝试一个简单的触发器。触发器应该维护一个日志表。日志将记录系统日期和受影响的行数。

这是我的代码:

CREATE OR REPLACE TRIGGER CREATELOGUPDATE
AFTER DELETE ON TREATMENT_HISTORY
BEGIN
 INSERT INTO LOG VALUES(SYSDATE,SQL%ROWCOUNT);
END;

这只是一个声明级触发器。它在第2行给出了一个缺少的字符错误。

我还有一个问题。

SQL%ROWCOUNT是否正确用于计算受上一个语句影响的行数?

1 个答案:

答案 0 :(得分:0)

将代码更改为:

CREATE OR REPLACE TRIGGER CREATELOGUPDATE
AFTER DELETE ON TREATMENT_HISTORY
DECLARE
 rows_number NUMBER;
BEGIN
 rows_number:=SQL%ROWCOUNT;
 INSERT INTO LOG VALUES(SYSDATE,rows_number);
END;

将使您的触发器无错误地创建。但是,它不会按预期工作,因为SQL%ROWCOUNT在这里使用是不正确的,并将永久返回NULL。

一种可能的解决方案是创建一个ROW级触发器,并为每个受影响的行增加存储在日志表中的一些数字。