Содержание
Ошибка Oracle PL / SQL 955, более известная как ORA-00955, возникает, когда пользователь создает объект в базе данных с именем, используемым уже существующим объектом, таким как таблица, представление, индекс, синоним или группа. Присвоение объекту другого имени устраняет ошибку.
ORA-00955 - ошибка исключения, которая возникает с именем, уже назначенным другому объекту (Джастин Салливан / Getty Images / Getty Images)
Сообщение об ошибке
Пользователь создает объект в командной строке Oracle PL / SQL с определенным именем и получает сообщение «Имя ORA-00955 уже используется существующим объектом».
причины
Сообщение об ошибке может появляться, когда пользователь устанавливает обновление, запускает сценарий в Oracle PL / SQL, который стирает или создает таблицы или индексы, или использует слово, зарезервированное для определенного системой объекта. Обычно пользователь пытается создать объект с именем, уже назначенным другому объекту в базе данных.
решение
Пользователям рекомендуется выбрать другое имя или объект или изменить и переименовать существующий объект, чтобы разрешить использование нужного имени. Посмотрите DBA_OBJECTS или USER_OBJECTS, чтобы подтвердить, если какой-либо другой пользователь использует имя в использовании.
Также проверьте псевдонимы и общедоступные синонимы для существующего имени, используя следующую инструкцию:
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
Таблица ALL_OBJECTS содержит список всех доступных пользователю объектов, доступных для определенного идентификатора входа. Чтобы повторно использовать имя, удалите все ненужные объекты с тем же именем.
Игнорирование ошибки с использованием обработки исключений
Пользователи могут обойти ORA-00955, создав обработчик исключений, который игнорирует ошибку создания объекта. Создайте код PL / SQL, который будет обрабатывать ошибку, и присвойте ей значение NULL:
ОБЪЯВИТЬ MyNamedTableExists ИСКЛЮЧЕНИЕ; pragma exception_init (MyNamedTableExists, -955); sql_stmt varchar2 (50): = 'создать таблицу tempstore (номер col1)'; НАЧАЛО / выполнить немедленно sql_stmt; / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySuppposedTable; /+ Игнорировать ошибки ORA-955, если имя таблицы уже существует) / ИСКЛЮЧЕНИЕ, когда MyNamedTableExists затем NULL; END;