Oracle “PLS-00103:预期时遇到符号“异常”

Oracle “PLS-00103:预期时遇到符号“异常”,oracle,plsql,database-trigger,Oracle,Plsql,Database Trigger,触发码- 错误- 可能您应该在BEGIN指令之后声明一些内容,以使函数执行实际操作?这可能是SQL语法所要求的。这就是为什么不能在BEGIN之后直接放置异常的原因。正如@sanfor所说,您需要在BEGIN-EXCEPTION块之间有一些内容。我可以编译触发器- SQL> CREATE 2 OR 3 replace TRIGGER tib_ms_merchant_group BEFORE 4 INSERT 5 ON emp FOR EACH ROW DECLARE

触发码-

错误-


可能您应该在BEGIN指令之后声明一些内容,以使函数执行实际操作?这可能是SQL语法所要求的。这就是为什么不能在BEGIN之后直接放置异常的原因。

正如@sanfor所说,您需要在BEGIN-EXCEPTION块之间有一些内容。我可以编译触发器-

SQL> CREATE
  2  OR
  3  replace TRIGGER tib_ms_merchant_group BEFORE
  4  INSERT
  5  ON emp FOR EACH ROW DECLARE integrity_error EXCEPTION;
  6
  7  PRAGMA EXCEPTION_INIT (integrity_error, -20001);
  8  errno  INTEGER;
  9  errmsg CHAR(200);
 10  dummy  INTEGER;
 11  FOUND  BOOLEAN;
 12  BEGIN
 13    NULL;
 14  EXCEPTION
 15  WHEN integrity_error THEN
 16    raise_application_error(errno, errmsg);
 17  END;
 18  /

Trigger created.

SQL> sho err
No errors.
SQL>
只需替换表名并在开始后添加所需的触发器逻辑

"PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: 
:= . ( @ % ;
The symbol ";" was substituted for "EXCEPTION" to continue."
SQL> CREATE
  2  OR
  3  replace TRIGGER tib_ms_merchant_group BEFORE
  4  INSERT
  5  ON emp FOR EACH ROW DECLARE integrity_error EXCEPTION;
  6
  7  PRAGMA EXCEPTION_INIT (integrity_error, -20001);
  8  errno  INTEGER;
  9  errmsg CHAR(200);
 10  dummy  INTEGER;
 11  FOUND  BOOLEAN;
 12  BEGIN
 13    NULL;
 14  EXCEPTION
 15  WHEN integrity_error THEN
 16    raise_application_error(errno, errmsg);
 17  END;
 18  /

Trigger created.

SQL> sho err
No errors.
SQL>