2012-06-18 85 views
1

错误:问题运行示例SQL

ORA-06550: line1, column 22: PLS-00103 Encountered the symbol "end-of-file" when expecting one of the following: * & = - + .......

PL/SQL块:

DECLARE v_c number :=0; 
    BEGIN 
     SELECT COUNT(*) into v_c from all_sequences where sequence_name='TEST_SEQ' and sequence_owner='test'; 
     IF v_c = 1 THEN 
     execute immediate 'DROP SEQUENCE test.TEST_SEQ'; 
     END IF; 
    END; 
/
+0

为什么立即执行?为什么不只是做'那么滴序列...'? – qJake

+4

@spikeX,你不能在PL/SQL块中执行DDL。 – Ben

+0

此外,在问题中增加一点解释或细节可能会有所帮助。不要只粘贴代码。 – qJake

回答

4

我从您的文章中复制的代码,并没有问题,跑了它在这两个的SQLDeveloper和的SQLPlus:

连接到: Oracle数据库11g版本11.2.0.3.0 - 生产

prompt> DECLARE v_c number :=0;       
    2  BEGIN 
    3  SELECT COUNT(*) into v_c from all_sequences where sequence_name='TEST_SEQ' and sequence_owner='test'; 
    4  IF v_c = 1 THEN 
    5   execute immediate 'DROP SEQUENCE test.TEST_SEQ'; 
    6  END IF; 
    7  END; 
    8/

PL/SQL procedure successfully completed. 

您使用的是什么工具?我最好的建议是在SQLPlus中尝试一下,如果你仍然有错误,给我们展示会话的全文。

+0

也适用于TOAD 10.5 –

4

您只执行第一行而不是整个PL/SQL块。

DECLARE v_c number :=0 
/

,导致:

DECLARE v_c number :=0 
       * 
ERROR at line 1: 
ORA-06550: line 1, column 22: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the 
following: 
* & = - + ; </> at in is mod remainder not rem 

正如其他建议,试试这个在sqlplus。