写了个触发器但是在pl/sql中不能调试,在命令窗口中执行出现如下:
25/10    PL/SQL: ORA-00933: SQL 命令未正确结束
23/2     PL/SQL: SQL Statement ignored
26/15    PLS-00103: 出现符号 "="在需要下列之一时:   := . ( @ % ;  符号 ":=在 "=" 继续之前已插入。  
28/30    PLS-00103:出现符号 ","在需要下列之一时
 但是 就是不能定位在哪一行,哪个地方出错!
求高人指教。

解决方案 »

  1.   

    出现符号 "="在需要下列之一时: := . ( @ % ; 符号 ":=在 "=" 继续之前已插入。 
    出现符号 ","在需要下列之一时-----------------
    除非你执行的是动态sql,否则会出现1楼所说的问题,
    你编译得过吗?
      

  2.   

    PLS-00103 found 'str' but expected one of the following: 'str' Cause:This message is from the parser. It found a token (language element) that is inappropriate in this context. Action:Check previous tokens as well as the one given in the message. The line and column numbers given in the following message refer to the end of the faulty language construct. 
      

  3.   

    create or replace trigger trig_TT_PUBAGENCYbefore insert  on T_PUBAGENCY for each rowdeclarev_itemid       T_PUBAGENCY.ITEMID%TYPE  ;
    v_startdate      date default sysdate;
    v_code          T_PUBAGENCY.CODE%TYPE;
    v_name           T_PUBAGENCY.NAME%TYPE;
    v_levelno        T_PUBAGENCY.LEVELNO%TYPE;
    v_isleaf         T_PUBAGENCY.ISLEAF%TYPE;
    v_status         T_PUBAGENCY.STATUS%TYPE;
    v_guid           T_PUBAGENCY.GUID%TYPE;
    v_superitemid    T_PUBAGENCY.SUPERITEMID%TYPE;
    v_action         number(1) default 0;
    v_elementcode    varchar2(30);
    --v_SQL            varchar2(1000);
    --v_SQL1           varchar2(1000);
        
    BEGIN
     select S_PUBAGENCY.nextval into v_itemid from dual;--取序列值
     v_startdate :=trunc(sysdate);
     v_levelno :=:NEW.CODE/3;
     v_status :=2;
     v_guid :=sys_guid();
     select (select nvl(max(t.itemid),0) from t_pubagency t 
     where t.code = substr(:NEW.code,0,length(:NEW.code)-3)) into v_superitemid from dual
     v_action:=1;
     v_elementcode:='AGENCY';
     INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
     VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);
    END;Warning: Trigger created with compilation errors
      

  4.   

    create or replace trigger trig_TT_PUBAGENCYbefore insert on T_PUBAGENCY for each rowdeclarev_itemid T_PUBAGENCY.ITEMID%TYPE ;
    v_startdate date default sysdate;
    v_code T_PUBAGENCY.CODE%TYPE;
    v_name T_PUBAGENCY.NAME%TYPE;
    v_levelno T_PUBAGENCY.LEVELNO%TYPE;
    v_isleaf T_PUBAGENCY.ISLEAF%TYPE;
    v_status T_PUBAGENCY.STATUS%TYPE;
    v_guid T_PUBAGENCY.GUID%TYPE;
    v_superitemid T_PUBAGENCY.SUPERITEMID%TYPE;
    v_action number(1) default 0;
    v_elementcode varchar2(30);
    --v_SQL varchar2(1000);
    --v_SQL1 varchar2(1000);BEGIN
    select S_PUBAGENCY.nextval into v_itemid from dual;--取序列值
    v_startdate :=trunc(sysdate);
    v_levelno :=:NEW.CODE/3;
    v_status :=2;
    v_guid :=sys_guid();
    select (select nvl(max(t.itemid),0) from t_pubagency t 
    where t.code = substr(:NEW.code,0,length(:NEW.code)-3)) into v_superitemid from dual;
    v_action:=1;
    v_elementcode:='AGENCY';
    INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
    VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);
    END;Warning: Trigger created with compilation errors
      

  5.   

    where t.code = substr(:NEW.code,0,length(:NEW.code)-3)) into v_superitemid from dual;
    后面少;VALUES(V_ITEMID,V_STARTDATE,,V_STATUS
    这里多一,你先改过来,看看是否能编译通过。
      

  6.   

    Warning: Trigger created with compilation errorsSQL> show error
    Errors for TRIGGER FASP.TRIG_TT_PUBAGENCY:LINE/COL ERROR
    -------- ---------------------------------
    28/88    PL/SQL: ORA-00984: 列在此处不允许
    27/2     PL/SQL: SQL Statement ignored
    改过之后还出现这种情况
      

  7.   

    说实话,没有表结构,光这样看,还真不容易找到错误,看了半天,只看到一个错误,你改掉试一试:
    你最后一个INSERT语句:
    INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
    VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);很明显多了个逗号,改一下:
    INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
    VALUES(V_ITEMID,V_STARTDATE,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);再试一试,其余的暂时还没看清楚呵呵,有PL/SQL自己调试下呗,点击错误,就锁定错误行了,你这个很明显是编译没通过呢,如楼上说,一般这种错误都是编译错误,如果是运行错误肯定是动态SQL,那他妈调死人,编译错误打印出来的东西真不是人看得懂的,呵呵,用调试器可以较为简单的定位错误所在行。