Правила вызова элементов пакета PL/SQL на примере

package  PL/SQL - правила вызоваГоворить о вызове или выполнении пакета PL/SQL в целом не имеет смысла, поскольку пакет является всего лишь контейнером для элементов кода. В программе можно использовать только элементы пакета.

Для ссылки на элементы пакета извне используется такой же точечный синтаксис, как для ссылки на столбцы таблиц. Давайте рассмотрим несколько примеров.

В следующей спецификации пакета объявляются константа, исключение, курсор PL/SQL и не­сколько модулей:

PACKAGE pets_inc 
IS
   max_pets_in_facility CONSTANT INTEGER := 120; 
   pet_is_sick EXCEPTION;

   CURSOR pet_cur (pet_id_in IN pet.id%TYPE) RETURN pet%ROWTYPE;

   FUNCTION next_pet_shots (pet_id_in IN pet.id%TYPE) RETURN DATE;
   PROCEDURE set_schedule (pet_id_in IN pet.id%TYPE);
END pets_inc;

Для ссылки на любые из этих элементов перед именем элемента ставится префикс в виде имени пакета:

DECLARE
   -- Константа объявляется на основе типа столбца id таблицы pet 
   c_pet CONSTANT pet.id%TYPE:= 1099; 
   v_next_appointment DATE;
BEGIN
   IF pets_inc.max_pets_in_facility > 100 
   THEN
      OPEN pets_inc.pet_cur (c_pet);
   ELSE
      v_next_appointment:= pets_inc.next_pet_shots (c_pet);
   END IF;
EXCEPTION
   WHEN pets_inc.pet_is_sick 
   THEN
      pets_inc.set_schedule (c_pet);
END;

Итак, при обращении к элементам пакета PL/SQL необходимо соблюдать два правила:

  •  Если элемент определяется в спецификации пакета, то для ссылки на него из внешней программы следует использовать точечный синтаксис: имяпакета.имяэлемента.
  •  Если ссылка на элемент используется в самом пакете (спецификации или теле), имя пакета задавать не нужно, поскольку PL/SQL автоматически идентифицирует ее как обращение к элементу, объявленному в области действия пакета.

 

Вас заинтересует / Intresting for you:

Использование констант в запро...
Использование констант в запро... 4855 просмотров Дэйзи ак-Макарова Sat, 12 Jun 2021, 18:48:10
PL/SQL: безопасность уровня ст...
PL/SQL: безопасность уровня ст... 4243 просмотров Stas Belkov Tue, 09 Apr 2019, 16:21:47
Основы PL/SQL: набор специальн...
Основы PL/SQL: набор специальн... 14770 просмотров Александров Попков Wed, 03 Jan 2018, 13:42:20
Программирование PL/SQL: безоп...
Программирование PL/SQL: безоп... 6160 просмотров Илья Дергунов Tue, 25 Dec 2018, 08:44:56
Войдите чтобы комментировать