Как изменить пакет oracle без удаления пакета

Вопрос: Мне нужно добавить функцию к этому пакету без удаления пакета? Просто добавьте еще одну функцию. DROP PACKAGE BANINST1.SB_ENROLLMENT CREATE OR REPLACE PACKAGE BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; END sb_enrollment; DROP PACKAGE BODY BANINST1.SB_ENROLLMENT / CREATE OR REPLACE PACKAGE BODY BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; BEGIN END f_query_all_active_ptrm; END sb_enrollment; Ответ

Вопрос:

Мне нужно добавить функцию к этому пакету без удаления пакета? Просто добавьте еще одну функцию.

DROP PACKAGE BANINST1.SB_ENROLLMENT CREATE OR REPLACE PACKAGE BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; END sb_enrollment; DROP PACKAGE BODY BANINST1.SB_ENROLLMENT / CREATE OR REPLACE PACKAGE BODY BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; BEGIN END f_query_all_active_ptrm; END sb_enrollment; Ответ №1

Вы не можете добавить ALTER пакет для добавления новой функции. Так как вы используете CREATE OR REPLACE, вам не нужно DROP пакета или тела пакета. Поскольку пакет представляет собой один объект, вам нужно будет полностью заменить как спецификацию пакета, так и тело пакета (так что вам нужно будет включить все существующие функции и процедуры).

CREATE OR REPLACE PACKAGE BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; FUNCTION new_function_name RETURN number; END sb_enrollment; CREATE OR REPLACE PACKAGE BODY BANINST1.sb_enrollment AS FUNCTION f_query_all_active_ptrm () RETURN enrollment_ref; BEGIN <<some implementation>> END f_query_all_active_ptrm; FUNCTION new_function_name RETURN number IS BEGIN RETURN 1; END; END sb_enrollment;

Оцените статью
Добавить комментарий