Правила вызова элементов пакета 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? Код... 3584 просмотров Doctor Sat, 13 Oct 2018, 06:12:33
Компиляция в низкоуровневый ко...
Компиляция в низкоуровневый ко... 749 просмотров Максим Николенко Tue, 08 Oct 2019, 06:40:16
Объявление переменных и конста...
Объявление переменных и конста... 8682 просмотров Antoniy Sun, 07 Oct 2018, 08:50:14
Функции CAST и EXTRACT в PL/SQ...
Функции CAST и EXTRACT в PL/SQ... 3774 просмотров Игорь Воронов Sun, 17 Jun 2018, 14:34:58
Войдите чтобы комментировать