Oracle Db 11g触发器语法

时间:2014-05-02 16:28:08

标签: c# oracle visual-studio

我尝试在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:遇到符号","当期待以下之一时:out ... long double ref char time timestamp interval date二进制国家字符nchar编译失败,第3行(18:23:50) PLS-00103:遇到了符号" BEGIN"当期待下列之一:没有空的无限悬空空编译失败,第5行(18:23:50) PLS-00103:遇到符号" END"当期待以下之一:,;返回

所以永远是问题,但是什么?我在数据库中键入的列是可以的,但我仍然遇到此错误?

1 个答案:

答案 0 :(得分:0)

将“FOR EACH ROW”改为:

REFERENCING OLD AS old NEW AS new FOR EACH ROW

我在11g中有一些类似的触发器遵循相同的语法。

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

DECLARE
    -- no variables
BEGIN
  --Code

编辑2:

示例帖子中的语法是正确的。这些错误似乎表明缺少(或额外)引号,逗号或分号。