これは、スラッシュ/
を付けたためです。 スクリプトの最後にあります。
そのため、バッファ内の前のステートメントが再度実行されます。つまり、CREATETABLEステートメントは2回実行されます 。
スラッシュを最後から削除します。個々のクエリのステートメントターミネータとしては、セミコロンで十分です。
これが私のやり方です:
SQL> BEGIN
2 EXECUTE IMMEDIATE 'DROP TABLE TEMP_SOURCE';
3 EXCEPTION
4 WHEN OTHERS THEN
5 IF SQLCODE != -942 THEN
6 RAISE;
7 END IF;
8 END;
9 /
PL/SQL procedure successfully completed.
SQL>
SQL> CREATE TABLE TEMP_SOURCE
2 (
3 COL_1 VARCHAR2(30 CHAR),
4 COL_2 VARCHAR2(30 CHAR),
5 COL_3 VARCHAR2(30 CHAR)
6 );
Table created.
SQL>
そうは言っても、スクリプトには複数の問題があります。
列名にスペースを含めることはできません。 COL 1
は無効な列名です。 無効な識別子エラーが発生します 。
別の問題:
追加のカンマがあります 列リストの最後 。