2016-12-06 338 views
0

注意:使用Oracle SQL Developer ::时没有这个问题 - 但这里不是标准。所以,我必须找到一种方法,在PL/SQL Developer来做到这一点PL/SQL Developer中的PLS-00103错误

当尝试使用PL/SQL开发人员(PL/SQL开发人员 - 程序)来动态删除表,然后创建一个使用新的create语句我始终如一地碰上该错误:
PLS-00103:出现符号“/”符号“/”被忽略PLSQL

这是由于这样的“/”在动态sql的端部。

如果我删除了“/”从最终我收到一个错误: 出现符号“CREATE”

什么是避开PL/SQL Developer中这个错误的最好方法是什么?

谢谢:

DECLARE 
     VE_TABLENOTEXISTS EXCEPTION; 
PRAGMA EXCEPTION_INIT(VE_TABLENOTEXISTS, -942); 


    PROCEDURE DROPTABLE(PIS_TABLENAME IN VARCHAR2) IS 
       VS_DYNAMICDROPTABLESQL VARCHAR2(1024); 
        BEGIN 
         VS_DYNAMICDROPTABLESQL := 'DROP TABLE ' || PIS_TABLENAME; 
        EXECUTE IMMEDIATE VS_DYNAMICDROPTABLESQL; 

        EXCEPTION 
         WHEN VE_TABLENOTEXISTS THEN 
          DBMS_OUTPUT.PUT_LINE(PIS_TABLENAME || ' NOT EXIST, SKIPPING....'); 
         WHEN OTHERS THEN 
          DBMS_OUTPUT.PUT_LINE(SQLERRM); 
        RAISE; 
        END DROPTABLE; 

    BEGIN 
     DROPTABLE('foo.foo_table'); 
END DROPTABLE; 
/

CREATE TABLE foo.foo_table AS 
(
SELECT STUFF, MORE_STUFF FROM not_foo_table 
) 
; 

SELECT * FROM foo.foo_table 
; 

回答

1

我有太多PLSQL开发。 我试着按照你发布的方式来编译你的过程,并且我得到了同样的错误,但是如果我在“/”之前删除空格,它就可以正常工作;像它不承认“/”。

所以,我建议你可以改变:

END DROPTABLE; 
/

对于这一点:

END DROPTABLE; 
/
+0

哈哈哈!空间!我从来没有在SQl空间导致此麻烦之前。 – BGDev