ORA-06550:第1行,列65:PLS-00103:出现符号 “CREATE” 在需要下列之一时:

问题描述:

我的代码ORA-06550:第1行,列65:PLS-00103:出现符号 “CREATE” 在需要下列之一时:

CREATE OR REPLACE PROCEDURE myproc IS 
     CurrDep Number; 
     Tot Number; 
     accm Number; 

     Cursor Cur_lcd is 
      select * from Courier_Scanner; 
     Cur_row Courier_Scanner%rowtype; 
    Begin 

     for Cur_row in Cur_lcd 
     Loop 
      CurrDep := (Cur_row.PURCHASE_PRICE- Cur_row.SALVAGE)/Cur_row.LIFE_SPAN; 
      accm:= Cur_row.TOTAL_ACC_DEP; 
      Tot := CurrDep + accm; 

      Update Courier_Scanner 
      set CURR_PRED_DEP = Currdep, 
       TOTAL_ACC_DEP = Tot, 
       NET_VALUE = Cur_row.PURCHASE_PRICE-Tot 
       ACCUMULATED_DEP = accm 
      where SC_NO = Cur_row.SC_NO; 
     end loop; 

     commit; 
    END myproc;  

错误:

ORA-06550: line 1, column 65: PLS-00103: Encountered the symbol "CREATE"           
    when expecting one of the following: (begin case declare exit for goto 
    if loop mod null pragma raise return select update while with <an 
    identifier> <a double- 

人通过指出程序中的确切错误来帮助我。我花了几个小时,但看不到任何。

有在该行

NET_VALUE= Cur_row.PURCHASE_PRICE-Tot ACCUMULATED_DEP=accm where SC_NO =Cur_row.SC_NO;

纠正它,如下面的更新语句缺少一个逗号(,):

UPDATE Courier_Scanner 
     SET CURR_PRED_DEP = Currdep, 
      TOTAL_ACC_DEP = Tot, 
      NET_VALUE = Cur_row.PURCHASE_PRICE - Tot, 
      ACCUMULATED_DEP = accm 
     WHERE SC_NO = Cur_row.SC_NO; 

该存储过程绝对没有错。如果您使用的是TOAD或SQL * Plus,请务必在每个正在编译的PL/SQL块之后的单独行上放置正斜杠。正斜杠是TOAD和SQL * Plus中的默认块终止符。