1

注: Oracle SQL Developer を使用している場合、この問題はありません:: - しかし、ここでは標準ではありません。したがって、PL/SQL Developerでこれを行う方法を見つける必要があります

PL/SQL 開発者 (PL/SQL Developer - プログラム) を使用してテーブルを動的に削除し、create ステートメントを使用して新しいテーブルを作成しようとすると、常に次のエラーが発生します:
PLS-00103: ENCOUNTERED THE SYMBOL "/" THE SYMBOL "/ " PLSQL は無視されました

これは、動的 SQL の末尾にある「/」が原因です。

最後から「/」を削除すると、次のエラーが表示されます: ENCOUNTERED THE SYMBOL "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
;
4

1 に答える 1

1

私も PLSQL Developer を持っています。投稿した方法でプロシージャをコンパイルしようとすると、同じエラーが発生しますが、「/」の前の空白を削除すると正常に動作します。「/」を認識しないように。

したがって、次のように変更することをお勧めします。

END DROPTABLE;
   /

このため:

END DROPTABLE;
/
于 2016-12-06T19:59:07.750 に答える