Изменить пакет процедур и тело пакета PL / SQL - PullRequest
4 голосов
/ 24 января 2012

Я хочу сделать инкрементальный скрипт для моей базы данных Oracle.Я хочу изменить только одну сигнатуру процедуры, а ее тело и остальное должны остаться прежними.

Как это сделать, не воссоздавая пакет дыр с созданием или заменой?


Пример

Старый пакет

PROCEDURE LOAD_ITEMS(OUTCURSOR OUT SYS_REFCURSOR);

Новый пакет

PROCEDURE LOAD_ITEMS(P_ID IN CHAR, OUTCURSOR OUT SYS_REFCURSOR);

Редактировать:
По инкрементамскрипт, я имею в виду обновить скрипт с предыдущей версии до этой.И я хочу изменить только текущую процедуру, а не все из них.

1 Ответ

19 голосов
/ 24 января 2012

Если вы хотите изменить процедуру в спецификации пакета, вам нужно
CREATE OR REPLACE
всей спецификации пакета и тела с измененным кодом.


ПокаОператор ALTER PACKAGE может использоваться для перекомпиляции всего пакета, он

[...] не изменяет объявление или определение существующего пакета.Чтобы переопределить или переопределить пакет, используйте оператор CREATE PACKAGE или CREATE PACKAGE BODY с предложением OR REPLACE.

...