Obsah
Chyba Oracle PL / SQL 955, známejšia ako ORA-00955, nastane, keď používateľ vytvorí objekt v databáze s názvom, ktorý používa už existujúci objekt, napríklad tabuľka, pohľad, index, synonymum alebo skupina. Odovzdanie objektu inému názvu rieši chybu.
ORA-00955 je chyba výnimky, ktorá sa vyskytuje pri názve, ktorý už bol priradený inému objektu (Justin Sullivan / Getty Images / Getty Images)
Chybové hlásenie
Používateľ vytvorí objekt na príkazovom riadku Oracle PL / SQL s určitým názvom a prijme správu "Názov ORA-00955 je už používaný existujúcim objektom".
príčiny
Chybové hlásenie sa môže vyskytnúť, keď používateľ nainštaluje aktualizáciu, spustí skript v systéme Oracle PL / SQL, ktorý vymaže alebo vytvorí tabuľky alebo indexy, alebo použije slovo vyhradené pre systémovo definovaný objekt. Vo všeobecnosti sa užívateľ pokúsi vytvoriť objekt s menom, ktoré už bolo priradené inému objektu v databáze.
riešenie
Používateľom sa odporúča, aby si vybrali iný názov alebo objekt alebo upravili a premenovali existujúci objekt, aby umožnili použitie požadovaného mena. Pozrite si DBA_OBJECTS alebo USER_OBJECTS, aby ste potvrdili, či má iný užívateľ používaný názov.
Skontrolujte aj prezývky a verejné synonymá pre existujúci názov pomocou nasledujúceho vyhlásenia:
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
Tabuľka ALL_OBJECTS obsahuje zoznam všetkých objektov, ktoré sú dostupné pre špecifické prihlasovacie ID. Ak chcete meno znova použiť, vymažte všetky nechcené objekty s rovnakým názvom.
Ignorovanie chyby pomocou spracovania výnimiek
Používatelia môžu obísť ORA-00955 vytvorením obsluhy výnimiek, ktorá ignoruje chybu pri vytváraní objektu. Vytvorte kód PL / SQL, ktorý bude spracovávať chybu a priradíte jej stav: NULL:
DECLARE MyNamedTableExists VÝNIMKA; pragma exception_init (MyNamedTableExists, -955); sql_stmt varchar2 (50): = 'vytvoriť tabuľku tempstore (číslo col1)'; ZAČNÚ / vykonať okamžité sql_stmt; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTable; /+ Ignorovať chyby ORA-955, ak názov tabuľky už existuje) / VÝNIMKA, keď MyNamedTableExists potom NULL; END;