SQL> create or replace trigger toto 
  2  after insert or update or delete on admin
  3  for each row
  4  DECLARE 
  5  nn char(10);
  6  BEGIN
  7  IF inserting THEN 
  8  nn='INSERT';
  9  ELSEIF updating THEN 
 10  nn='Update';
 11  ELSE 
 12  nn='Delete';
 13  END IF;
 14  INSERT INTO admin VALUES(nn,nn);
 15  END toto;
 16  /警告: 创建的触发器带有编译错误。SQL> show error;
TRIGGER TOTO 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------
5/3      PLS-00103: 出现符号 "="在需要下列之一时:
         := . ( @ % ;

解决方案 »

  1.   

      5  nn char(10); 
      6  BEGIN 
      7  IF inserting THEN 
      8  nn='INSERT'; 
      9  ELSEIF updating THEN 
    10  nn='Update'; 
    11  ELSE 
    12  nn='Delete'; 
    13  END IF; 
    14  INSERT INTO admin VALUES(nn,nn); 
    PL/SQL赋值符号为:=
    如 a := 1;
      

  2.   

    SQL> create or replace trigger toto 
      2  after insert or update or delete on admin
      3  for each row
      4  DECLARE 
      5  nn char(10);
      6  BEGIN
      7  IF inserting THEN 
      8  nn:='INSERT';
      9  ELSEIF updating THEN 
     10  nn:='Update';
     11  ELSE 
     12  nn:='Delete';
     13  END IF;
     14  INSERT INTO admin VALUES(nn,nn);
     15  END toto;
     16  /警告: 创建的触发器带有编译错误。SQL> show error;
    TRIGGER TOTO 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    6/8      PLS-00103: 出现符号 "UPDATING"在需要下列之一时:
             := . ( @ % ;12/5     PLS-00103: 出现符号 "TOTO"在需要下列之一时:
             if
      

  3.   

    ELSEIF updating THEN 
    是 elsif
      

  4.   

    我改了也不对。。
    elseif 
    elsif 
    都可以用
    SQL> create or replace trigger toto 
      2  after insert or update or delete on admin
      3  for each row
      4  DECLARE
      5  nn char(20);
      6  BEGIN
      7  IF inserting THEN 
      8  nn='in';
      9  elsif updating THEN 
     10  nn='up';
     11  else
     12  nn='de';
     13  end if;
     14  INSERT INTO admin VALUES(nn,nn);
     15  END;
     16  /警告: 创建的触发器带有编译错误。SQL> show error;
    TRIGGER TOTO 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    5/3      PLS-00103: 出现符号 "="在需要下列之一时:
             := . ( @ % ;
             符号 ":=在 "=" 继续之前已插入。7/3      PLS-00103: 出现符号 "="在需要下列之一时:
             := . ( @ % ;
             符号 ":=在 "=" 继续之前已插入。9/3      PLS-00103: 出现符号 "="在需要下列之一时:
             := . ( @ % ;
             符号 ":=在 "=" 继续之前已插入。LINE/COL ERROR
      

  5.   

    补充个表:drop table admin;create table admin(
    nn varchar(10),
    pp varchar(10)
    );
      

  6.   

    SQL> create or replace trigger toto
      2  after insert or update or delete on admin
      3  for each row
      4  DECLARE
      5  nn char(10);
      6  BEGIN
      7  IF inserting THEN
      8  nn:='INSERT';
      9  ELSIF updating THEN
     10  nn:='Update';
     11  ELSE
     12  nn:='Delete';
     13  END IF;
     14  INSERT INTO admin VALUES(nn,nn);
     15  END toto;
     16  /触发器已创建
      

  7.   

    总结了:赋值错误。。
    请教 :
    Sql plus错误提示 如何 看??
    谢谢。。
      

  8.   

    show error 可以查看你的错误信息,只能给你含糊的圈定错误信息范围。然后你再自己有针对性的改。噢啦!还有一个办法查看错误信息的,就是你创建一个系统触发器:--临时表,存储错误信息
    CREATE TABLE error_log (
       timestamp DATE,
       username VARCHAR2(30),
       instance NUMBER,
       database_name VARCHAR2(50),
       error_stack VARCHAR2(2000)
    );--触发器
    CREATE OR REPLACE TRIGGER LogErrors
       AFTER SERVERERROR ON DATABASE
    BEGIN
       INSERT INTO error_log
       VALUES (SYSDATE, SYS.LOGIN_USER, SYS.INSTANCE_NUM, SYS.
       DATABASE_NAME, DBMS_UTILITY.FORMAT_ERROR_STACK);
    END LogErrors;
      

  9.   

    1. :=写成=
    2. elseif 应该时elsif3.show err看错误。