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

Преобразования типов данных в ...
Преобразования типов данных в ... 23165 просмотров Семен Sat, 12 May 2018, 17:44:35
Команды DDL языка PL/SQL на пр...
Команды DDL языка PL/SQL на пр... 17033 просмотров Antoni Sat, 25 Aug 2018, 07:32:26
Специализированные приемы опти...
Специализированные приемы опти... 9609 просмотров Akmal Tue, 27 Nov 2018, 13:04:32
SQL и PL/SQL для разработчиков...
SQL и PL/SQL для разработчиков... 2349 просмотров Antoni Sun, 07 Oct 2018, 08:50:14
Войдите чтобы комментировать