O que é o Oracle SQL Code 955?

Autor: Charles Brown
Data De Criação: 4 Fevereiro 2021
Data De Atualização: 27 Novembro 2024
Anonim
O que é o Oracle SQL Code 955? - Artigos
O que é o Oracle SQL Code 955? - Artigos

Contente

O erro 955 do Oracle PL/SQL, mais conhecido como ORA-00955, ocorre quando um usuário cria um objeto no banco de dados com um nome em uso por algum objeto já existente, como uma tabela, visualização, índice, sinônimo ou grupo. Dar ao objeto um nome diferente resolve o erro.


ORA-00955 é um erro de exceção que ocorre com um nome já atribuído a outro objeto (Justin Sullivan/Getty Images News/Getty Images)

Mensagem de erro

Um usuário cria um objeto na linha de comando do Oracle PL/SQL com um certo nome e recebe a mensagem "ORA-00955 nome já está em uso por um objeto existente".

Causas

A mensagem de erro pode ocorrer quando um usuário instala uma atualização, executa um script no Oracle PL/SQL que apaga ou cria tabelas ou índices, ou usa uma palavra reservada para um objeto definido pelo sistema. Geralmente, o usuário tentará criar um objeto com o nome já atribuído para outro objeto existente no banco de dados.

Solução

Os usuários são aconselhados a selecionar outro nome ou objeto, ou modificar e renomear um objeto já existente para permitir o uso do nome desejado. Consulte DBA_OBJECTS ou USER_OBJECTS para confirmar se algum outro usuário possui o nome em uso.


Cheque também pseudônimos e sinônimos públicos para o nome existente, usando a declaração a seguir:

SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";

A tabela ALL_OBJECTS contém a lista de todos os objetos acessíveis ao usuário disponíveis para o log-in ID específico. Para reutilizar um nome, apague todos os objetos não desejados com o mesmo nome.

Ignorando o erro usando tratamento de exceção

Os usuários podem ignorar o ORA-00955 criando um manipulador de exceção que ignora o erro da criação do objeto. Crie um código em PL/SQL que tratará o erro e atribuirá "NULL" ao seu status:

DECLARE MyNamedTableExists EXCEPTION; pragma exception_init(MyNamedTableExists,-955); sql_stmt varchar2(50) := 'create table tempstore (col1 number)'; BEGIN / execute immediate sql_stmt; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTable; /+ Ignore ORA-955 errors if the table name already exists) / EXCEPTION when MyNamedTableExists then NULL; END;