Isso porque você colocou uma barra
/
no final do roteiro. Devido a isso, a instrução anterior no buffer é executada novamente. O que significa que a instrução CREATE TABLE é executada duas vezes .
Remova a barra do final. O ponto e vírgula é suficiente como terminador de instrução para consultas individuais.
É assim que eu faria:
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>
Dito isto, você tem vários problemas no script.
Você não pode ter um espaço no nome da coluna.
COL 1
é um nome de coluna inválido. Você receberá Erro de identificador inválido . Outro problema:
Há uma vírgula extra no final da lista de colunas .