Nwlapcug.com


Che cosa è Oracle SQL Codice 955?

Che cosa è Oracle SQL Codice 955?


Codice di errore di Oracle PL/SQL 955, noto anche come l'errore ORA-00955, si verifica quando un utente crea un oggetto nel database con un nome già in uso da un oggetto esistente, ad esempio una tabella, vista, indice, sinonimo o cluster. Dà all'oggetto un nome alternativo di solito risolve l'errore.

Messaggio sul display

Un utente crea un oggetto nella riga di comando di Oracle PL/SQL con un certo nome e vede il messaggio "ORA-00955 nome è già utilizzato da un oggetto esistente" visualizzato sullo schermo.

Cause

Il messaggio di errore può verificarsi quando un utente installa un aggiornamento, viene eseguito uno script di Oracle PL/SQL che gocce o crea tabelle o indici o utilizza una parola riservata per un oggetto definito dal sistema. Solitamente, l'utente verrà hanno tentato di creare un oggetto con un nome già assegnato a un oggetto esistente nel database.

Soluzione

Gli utenti sono invitati a selezionare un altro nome o l'oggetto o per modificare e rinominare un oggetto esistente per consentire l'uso del nome previsto. Query la tabella di sistema DBA_OBJECTS o USER_OBJECTS per confermare se un altro utente ha il nome in uso.

Inoltre verifica alias e sinonimi pubblici per il nome esistente, utilizzando le seguenti istruzioni:

SELEZIONARE *
DA ALL_OBJECTS
DOVE nomeoggetto = "Nome";

La tabella ALL_OBJECTS contiene l'elenco di tutti gli oggetti accessibili all'utente disponibili per l'ID di login specifica Per riutilizzare un nome, eliminare tutti gli oggetti indesiderati con lo stesso nome.

Ignorare l'errore utilizzando un gestore di eccezioni

Gli utenti possono ignorare ORA-00955 mediante la creazione di un gestore di eccezioni che ignora l'errore di creazione oggetto. Creare un pezzo di codice PL/SQL che intercetta l'errore e vi assegna l'errore uno stato "NULL":

DICHIARARE
MyNamedTableExists eccezione;
pragma exception_init(MyNamedTableExists,-955);
sql_stmt VARCHAR2 (50): = 'create table tempstore (col1 numero)';
BEGIN
/ esecuzione immediata sql_stmt; /
CREARE tabella MyNamedTableExists AS
SELECT FROM MySupposedTable;
/
+ Ignora ORA-955 errori se la tabella nome già esiste) * /
ECCEZIONE quando MyNamedTableExists quindi NULL;
FINE;