2010-02-08 8 views
8

Есть ли способ переименовать процедуру оракула без необходимости отбрасывать и воссоздавать процедуру?Как переименовать процедуру Oracle

+1

Могу ли я спросить, почему вы не хотите делать капли и воссоздавать? –

+2

, потому что мне нужно будет создавать исправления и гранты для всех, и, поскольку я делаю тесты, у меня есть много процедур для изменения. – ash

ответ

5

К сожалению, нет эквивалента ALTER TABLE ... RENAME TO для объектов PL/SQL. Поэтому я боюсь, вам придется отказаться от процедуры и создать ее заново с новым именем ....

... если только с помощью SYNONYM не разрешит вашу привязку. Не зная , почему вы хотите изменить название процедуры, это немного сложно дать совет.

2

Путь вокруг этого будет использовать процедуру внутри пакета. Для достижения вашей цели вы можете использовать CREATE OR REPLACE PACKAGE ... и CREATE OR REPLACE PACKAGE BODY ....

0

Невозможно переименовать процедуру, если вы не сбросите ее и не создадите ее снова. В любом случае:

  • Если у вас есть много процедур, которые должны были бы использовать PACKAGE с вместо PROCEDURE с. Таким образом вам нужно будет только изменить PACKAGE BODY.
  • Если ваша проблема заключается в том, чтобы воссоздать гранты, вы можете легко создать сценарий для запроса DBA_TAB_PRIVS (да, также содержит привилегии для процедур).
1

Вы можете эффективно переименовать процедуру, просто создавая другую процедуру - с новым именем - это просто называет старую процедуру

создать или заменить процедуру new_procedure_name
в
начинают

old_procedure_name;

конец;

Смежные вопросы