Das liegt daran, dass Sie einen Schrägstrich /
eingefügt haben am Ende des Skripts.
Dadurch wird die vorherige Anweisung im Puffer erneut ausgeführt. Das heißt, die CREATE TABLE-Anweisung wird zweimal ausgeführt .
Entfernen Sie den Schrägstrich am Ende. Als Anweisungsabschlusszeichen für einzelne Abfragen reicht das Semikolon.
So würde ich vorgehen:
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>
Allerdings haben Sie mehrere Probleme im Skript.
Der Spaltenname darf kein Leerzeichen enthalten. COL 1
ist ein ungültiger Spaltenname. Sie erhalten Ungültiger Bezeichner-Fehler .
Ein weiteres Problem:
Es gibt ein zusätzliches Komma am Ende der Spaltenliste .