Правила вызова элементов пакета 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:

Пакеты PL/SQL и объектные типы...
Пакеты PL/SQL и объектные типы... 2504 просмотров Игорь Воронов Fri, 12 Oct 2018, 11:54:11
LPAD и RPAD - дополняем строку...
LPAD и RPAD - дополняем строку... 7908 просмотров Дэйзи ак-Макарова Thu, 17 May 2018, 06:48:21
Обзор типов данных PL/SQL
Обзор типов данных PL/SQL 10920 просмотров Дэн Thu, 10 May 2018, 18:42:09
Объектно-ориентированные возмо...
Объектно-ориентированные возмо... 22445 просмотров Максим Николенко Fri, 01 Nov 2019, 11:21:11
Войдите чтобы комментировать