Tartalom
Az Oracle PL / SQL 955-ös hiba, amely jobban ismert, mint ORA-00955, akkor fordul elő, ha a felhasználó egy objektumot hoz létre az adatbázisban egy már létező objektum által használt névvel, mint például egy táblázat, nézet, index, szinonim vagy csoport. Az objektumnak egy másik nevet adva megoldja a hibát.
Az ORA-00955 kivétel hiba, amely egy másik objektumhoz már hozzárendelt névvel jelentkezik (Justin Sullivan / Getty Images / Getty Images)
Hibaüzenet
A felhasználó egy bizonyos nevű objektumot hoz létre az Oracle PL / SQL parancssori sorban, és megkapja az "ORA-00955 név már létező objektum által használt" üzenetet.
okai
A hibaüzenet akkor fordulhat elő, amikor egy felhasználó frissítést telepít, futtat egy parancsfájlt az Oracle PL / SQL programban, amely törli vagy létrehozza a táblázatokat vagy indexeket, vagy a rendszer által meghatározott objektumhoz fenntartott szót használ. Általában a felhasználó megpróbál létrehozni egy objektumot az adatbázisban egy másik objektumhoz már hozzárendelt névvel.
megoldás
A felhasználóknak javasoljuk, hogy válasszanak más nevet vagy objektumot, vagy módosítsanak és nevezzenek át egy meglévő objektumot a kívánt név használatához. Lásd: DBA_OBJECTS vagy USER_OBJECTS, hogy ellenőrizze, hogy más felhasználó rendelkezik-e a használt névvel.
Ellenőrizze a meglévő név beceneveit és nyilvános szinonimáit az alábbi állítással:
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
Az ALL_OBJECTS tábla tartalmazza az adott bejelentkezési azonosítóhoz elérhető összes felhasználó által elérhető objektum listáját. Egy név újbóli használatához törölje az összes nem kívánt objektumot ugyanazzal a névvel.
Figyelmen kívül hagyva a hibát kivételkezeléssel
A felhasználók megkerülhetik az ORA-00955-öt egy kivételkezelő létrehozásával, amely figyelmen kívül hagyja az objektum létrehozási hibát. Hozzon létre egy PL / SQL-kódot, amely kezelni fogja a hibát, és hozzárendeli a "NULL" -et az állapotához:
DECLARE MyNamedTableExists EXCEPTION; pragma outstanding_init (MyNamedTableExists, -955); sql_stmt varchar2 (50): = 'táblázat tempstore létrehozása (col1 szám)'; BEGIN / azonnali sql_stmt végrehajtása; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTable; /+ Az ORA-955 hibáinak figyelmen kívül hagyása, ha a táblázat neve már létezik. / EXCEPTION, amikor a MyNamedTableExists akkor NULL; END;