Существует ли способ переименовать процедуру оракула, не имея необходимость отбрасывать и воссоздавать процедуру?
К сожалению, нет эквивалента ALTER TABLE ... RENAME
TO для объектов PL / SQL. Поэтому я боюсь, что вам придется отбросить процедуру и создать ее заново с новым именем ....
... если только использование SYNONYM не разрешит вашу привязку. Не зная , почему вы хотите изменить имя процедуры, дать совет немного сложно.
Для решения этой проблемы можно использовать процедуру внутри пакета. Затем вы можете использовать СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПАКЕТ ...
и СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ТЕЛО ПАКЕТА ...
для достижения своей цели.
Невозможно переименовать процедуру, если вы не отбросите и не создадите ее снова. В любом случае:
PACKAGE
вместо PROCEDURE
. Таким образом, вам нужно будет только изменить ТЕЛО ПАКЕТА
. DBA_TAB_PRIVS
(да, также содержит привилегии для процедур). Вы можете эффективно переименовать процедуру, просто создав другую процедуру - с новым именем - которая просто вызывает старую процедуру
create or replace procedure new_procedure_name
as
beginold_procedure_name;
end;