Vsebina
Napaka Oracle PL / SQL 955, bolj znana kot ORA-00955, nastane, ko uporabnik ustvari objekt v bazi podatkov z imenom, ki ga uporablja že obstoječi objekt, kot so tabela, pogled, indeks, sopomenka ali skupina. Če predmet dodelite drugemu imenu, se napaka razreši.
ORA-00955 je izredna napaka, ki se pojavi z že dodeljenim imenom drugega objekta (Justin Sullivan / Getty Images / Getty Images)
Sporočilo o napaki
Uporabnik ustvari objekt v ukazni vrstici Oracle PL / SQL z določenim imenom in prejme sporočilo "ime ORA-00955 že uporablja obstoječi objekt".
Vzroki
Sporočilo o napaki se lahko pojavi, ko uporabnik namesti posodobitev, zažene skript v Oracle PL / SQL, ki izbriše ali ustvari tabele ali indekse, ali uporablja besedo, rezervirano za sistemsko definiran objekt. Na splošno bo uporabnik skušal ustvariti objekt z imenom, ki je že dodeljeno drugemu objektu v bazi podatkov.
Rešitev
Uporabnikom svetujemo, da izberejo drugo ime ali predmet ali spremenijo in preimenujejo obstoječi objekt, da omogočijo uporabo želenega imena. Glejte DBA_OBJECTS ali USER_OBJECTS, da potrdite, ali ima kateri koli drug uporabnik ime, ki ga uporabljate.
Preverite tudi vzdevke in javne sopomenke za obstoječe ime z naslednjo izjavo:
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
Tabela ALL_OBJECTS vsebuje seznam vseh dostopnih objektov, ki so na voljo za določen ID prijave. Če želite znova uporabiti ime, izbrišite vse neželene predmete z istim imenom.
Neupoštevanje napake z uporabo obdelave izjem
Uporabniki lahko obidejo ORA-00955, tako da ustvarijo obdelovalec izjem, ki prezre napako pri ustvarjanju objekta. Ustvarite kodo PL / SQL, ki bo obravnavala napako in dodelila statusu "NULL":
IZJAVI MyNamedTableExists IZJEMANJE; pragma exception_init (MyNamedTableExists, -955); sql_stmt varchar2 (50): = 'ustvarite tabelo tempstore (število col1)'; BEGIN / izvrši takojšnjo sql_stmt; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTable; /+ Zanemari napake ORA-955, če ime tabele že obstaja / IZJEMA, ko MyNamedTableExists potem NULL; END;