Oracle Db 11g触发器语法



我尝试在Oracle DB 11g中创建触发器,但没有成功。

CREATE OR REPLACE TRIGGER mytable_JOBUPD 
AFTER UPDATE OF jedan, trip ON mytable 
FOR EACH ROW 
BEGIN 
ADD_mytable_JOB ( :old.jedan, :old.trip, 'update', sysdate);
END mytable_JOBUPD;​

这个错误被分配:

Compilation failed,line 1 (18:23:50)

PLS-00103:遇到符号","时,期望下列之一:in out…时间戳间隔日期二进制国家字符编译失败,第3行(18:23:50)PLS-00103:当期望下列情况之一时遇到符号"BEGIN": not null of nan infinite悬空编译失败,第5行(18:23:50)pl -00103:当期望下列操作之一时,遇到了符号"END":,;返回返回

所以一切都是问题,但什么?我的列类型在数据库是好的,但我仍然得到这个错误?

将"FOR EACH ROW"替换为:

REFERENCING OLD AS old NEW AS new FOR EACH ROW

我在11g中有几个类似的触发器,它们遵循相同的语法。

编辑:你可能还需要在那之后,在开始之前声明。如果没有声明任何变量,我这样做:

DECLARE
    -- no variables
BEGIN
  --Code
编辑2:

示例文章中的语法在其他方面是正确的。这些错误似乎表明缺少(或多了)引号、逗号或分号。

最新更新