To dlatego, że umieściłeś ukośnik /
na końcu skryptu.
Dzięki temu poprzednia instrukcja w buforze jest ponownie wykonywana. Co oznacza, że instrukcja CREATE TABLE jest wykonywana dwukrotnie .
Usuń ukośnik z końca. Średnik wystarczy jako terminator instrukcji dla poszczególnych zapytań.
Tak bym zrobił:
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>
To powiedziawszy, masz wiele problemów w skrypcie.
W nazwie kolumny nie może być spacji. COL 1
jest nieprawidłową nazwą kolumny. Otrzymasz Błąd nieprawidłowego identyfikatora .
Kolejny problem:
Jest dodatkowy przecinek na końcu listy kolumn .