Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Evitando ORA-00955:nome já é usado por um objeto existente


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 .