本帖最后由 eHuaTian 于 2011-11-03 22:20:10 编辑

解决方案 »

  1.   

    lz的trigger没有写完呢,没有结束,加上end;就可以了
    --为此表创建一个触发器
       strSql := 'CREATE OR REPLACE TRIGGER triID_plan_rzfx_project
       BEFORE INSERT ON plan_rzfx_project FOR EACH ROW
       BEGIN  
      SELECT seqID_plan_rzfx_project.nextval INTO :NEW.ID FROM dual end;';
       execute immediate strSql;  
      

  2.   

    谢谢。我试了一下,加上end,运行时还是报错,错误提示如下:
    PLS-00103: 出现符号 "end-of-file"在需要下列之一时:  ( begin case    declare end exception exit for goto if loop mod null pragma    raise return select update while with <an identifier>    <a double-quoted delimited-identifier> <a bind variable> <<    continue close current delete fetch lock insert open rollback    savepoint set sql execute commit forall merge pipe purge 
      

  3.   

    不好意思,end前面少加了个分号;
    --为此表创建一个触发器
       strSql := 'CREATE OR REPLACE TRIGGER triID_plan_rzfx_project
       BEFORE INSERT ON plan_rzfx_project FOR EACH ROW
       BEGIN   
      SELECT seqID_plan_rzfx_project.nextval INTO :NEW.ID FROM dual; end;';
       execute immediate strSql;  
      

  4.   

    谢谢tx2730,我不明白的是:为什么要加上“end;”。
      

  5.   

    这是你的触发器原本代码
    CREATE OR REPLACE TRIGGER triid_plan_rzfx_project
       BEFORE INSERT
       ON plan_rzfx_project
       FOR EACH ROW
    BEGIN
       SELECT seqid_plan_rzfx_project.NEXTVAL
         INTO :NEW.ID
         FROM DUAL;
    END;
    Trigger的语法可以参考:
    http://blog.csdn.net/BOBO12082119/article/details/6436660
      

  6.   

    还是不明白,为什么我创建SEQUENCE 的语句中不要加入“end;”
      

  7.   

    Trigger和SEQUENCE是不同的对象,语法自然也不同,这些是Oracle的基础知识,lz多多加油啊