Zawartość
Błąd Oracle PL / SQL 955, lepiej znany jako ORA-00955, występuje, gdy użytkownik tworzy obiekt w bazie danych z nazwą używaną przez już istniejący obiekt, taki jak tabela, widok, indeks, synonim lub grupa. Nadanie obiektowi innej nazwy rozwiązuje błąd.
ORA-00955 jest błędem wyjątku występującym przy nazwie już przypisanej do innego obiektu (Justin Sullivan / Getty Images / Getty Images)
Komunikat o błędzie
Użytkownik tworzy obiekt w wierszu komend Oracle PL / SQL o określonej nazwie i odbiera komunikat „Nazwa ORA-00955 jest już używana przez istniejący obiekt”.
Przyczyny
Komunikat o błędzie może wystąpić, gdy użytkownik instaluje aktualizację, uruchamia skrypt w Oracle PL / SQL, który usuwa lub tworzy tabele lub indeksy, lub używa słowa zarezerwowanego dla obiektu zdefiniowanego przez system. Zasadniczo użytkownik będzie próbował utworzyć obiekt o nazwie już przypisanej do innego obiektu w bazie danych.
Rozwiązanie
Użytkownikom zaleca się wybranie innej nazwy lub obiektu albo zmodyfikowanie i zmianę nazwy istniejącego obiektu, aby umożliwić użycie żądanej nazwy. Zobacz DBA_OBJECTS lub USER_OBJECTS, aby potwierdzić, czy inny użytkownik ma używaną nazwę.
Sprawdź także pseudonimy i publiczne synonimy dla istniejącej nazwy, używając następującej instrukcji:
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
Tabela ALL_OBJECTS zawiera listę wszystkich dostępnych dla użytkownika obiektów dostępnych dla określonego identyfikatora logowania. Aby ponownie użyć nazwy, usuń wszystkie niechciane obiekty o tej samej nazwie.
Ignorowanie błędu za pomocą obsługi wyjątków
Użytkownicy mogą ominąć ORA-00955, tworząc program obsługi wyjątków, który ignoruje błąd tworzenia obiektu. Utwórz kod PL / SQL, który obsłuży błąd i przypisz „NULL” do jego stanu:
DECLARE MyNamedTableExists WYJĄTEK; pragma exception_init (MyNamedTableExists, -955); sql_stmt varchar2 (50): = 'utwórz tabelę tempstore (numer col1)'; BEGIN / wykonaj natychmiastowy sql_stmt; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTable; /+ Ignoruj błędy ORA-955, jeśli nazwa tabeli już istnieje) / WYJĄTEK, gdy MyNamedTableExists następnie NULL; END;