Ошибка при создании процедуры: ORA-00955: имя уже задействовано для существующего объекта
Пробую создать тестовую процедуру:
CREATE OR REPLACE PROCEDURE p1 (param1 number, param2 varchar2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Start p1('||param1||','||param2||')');
END;
/
Но получаю ошибку:
ORA-00955: имя уже задействовано для существующего объекта
Смотрю запросом ниже, но такой процедуры нет:
SELECT * FROM user_procedures WHERE procedure_name = 'P1';
no rows selected
Что делаю не так, или как создать процедуру?
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
В сообщении об ошибке идёт речь о всех обьектах БД. Имена объектов БД уникальны в пределах схемы независимо от их типа.
То есть, ранее был созданo: таблица, представление, что угодно, с тем же именем - P1:
create or replace synonym p1 for procedure1;
create or replace procedure p1 is
begin null;
end;
/
ORA-00955: имя уже задействовано для существующего объекта
Какой объект был создан, можно узнать запросом:
select object_name, object_type
from user_objects
where object_name = 'P1';
OBJECT_NAME OBJECT_TYPE
---------------- ----------------
P1 SYNONYM
Далее следует выбрать одно из двух:
- дать процедуре другое имя
- удалить или переименовать существующий объект
drop synonym p1;
Synonym P1 dropped.
create or replace procedure p1 is
begin null;
end;
/
Procedure P1 compiled