我在触发器中的一段代码如下:
  v_Code1:=Substr(:New.PARTNO,1,1);
  v_Code2:=Substr(:New.PARTNO,2,1);  
  v_Code3:=Substr(:New.PARTNO,3,1);
  
  Update SPSORT3 Set SPSORT3.SEQNO=SPSORT3.SEQNO+1 
         From SPSORT3,SPSORT2 
         Where SPSORT3.SORTCODE=v_Code3 
         And SPSORT3.PARENTCODE=v_Code2
         And SPSORT2.PARENTCODE=v_Code1 
         And SPSORT3.PARENTCODE=SPSORT2.Sortcode;编译时为什么提示说From 子语句后面那里的句语未结束???如果不要From 子句,又报SPSORT2.SORTCODE为非法标识求助

解决方案 »

  1.   

    你用的好像是sqlserver的语法,oracle语法是这样的
    UPDATE <table_name> <alias>
    SET (<column_name>,<column_name> ) = (
       SELECT (<column_name>, <column_name>)
       FROM <table_name>
       WHERE <alias.column_name> = <alias.column_name>);
      

  2.   

    楼上的意思是说这句:Set SPSORT3.SEQNO=SPSORT3.SEQNO+1 有问题?
      

  3.   

    一楼的意思是说oracle不支持update ... from 语法的,你可以考虑用子查询来替代update ... from 语法,语法格式如一楼。
    你的语句可以改成这样:  Update SPSORT3 Set SPSORT3.SEQNO=SPSORT3.SEQNO+1 
             Where SPSORT3.SORTCODE=v_Code3 
             And SPSORT3.PARENTCODE=v_Code2
             And SPSORT3.PARENTCODE in (
                   select Sortcode from SPSORT2 where  SPSORT2.PARENTCODE=v_Code1 )
      

  4.   

    谢两位!  Update SPSORT3 Set SPSORT3.SEQNO=SPSORT3.SEQNO+1 
             Where SPSORT3.SORTCODE=v_Code3 
             And SPSORT3.PARENTCODE=v_Code2
             And SPSORT3.PARENTCODE=(Select SORTCODE From SPSORT2 Where PARENTCODE=v_Code1);