Det beror på att du har satt ett snedstreck /
i slutet av manuset.
På grund av detta exekveras den tidigare satsen i bufferten igen. Vilket betyder att CREATE TABLE-satsen körs två gånger .
Ta bort snedstrecket från slutet. Semikolonet räcker som satsterminator för individuella frågor.
Så här skulle jag göra:
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>
Med det sagt har du flera problem i skriptet.
Du kan inte ha ett mellanslag i kolumnnamnet. COL 1
är ett ogiltigt kolumnnamn. Du kommer att få Ogiltig identifierarfel .
Ett annat problem:
Det finns ett extra komma i slutet av kolumnlistan .