Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет158/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   154   155   156   157   158   159   160   161   ...   177
Структура  пакета. 
Пакет,  или  модуль,  состоит  из  двух  различных 
частей:  заголовка,  или  спецификации,  пакета (package) и  тела (package 
body), каждая из которых хранится по отдельности в словаре данных. За-
головок пакета
 описывает его интерфейс, т. е. все те элементы, которые 
могут быть доступны всем пользователям пакета. Объявляемые в специ-
фикации пакета объекты называются общими (public). Среди них присут-
 
177


 
ствуют   описания  общедоступных  типов  и  объектов  и  спецификации 
общедоступных  функций  и  процедур.  К  общим  объектам  можно  обра-
щаться как извне пакета, так и из других объектов в пакете. 
 Заголовок пакета создается следующей структурой: 
CREATE [OR REPLACE] PACKAGE имя_пакета {IS|AS}  
 --определение типа; 
 --определение переменной, константы; 
 --объявление курсора; 
 --объявление исключительной ситуации; 
 --объявление функции; 
 --объявление процедуры 
END [имя_пакета]; 
Наличие в заголовке модуля всех вышеперечисленных элементов не-
обязательно. Например, заголовок модуля может состоять только из объ-
явлений процедур и функций. Элементы пакета могут размещаться в нем 
в любом порядке, но если какие-то элементы пакета ссылаются на другие 
объекты  того  же  пакета,  то  последние  должны  быть  объявлены  до  ссы-
лок на эти объекты. Объявления всех процедур и функций должны быть 
предварительными, т. е. в отличие от раздела объявлений блока, где мо-
гут находиться как предварительные объявления, так и реальные тексты 
процедур и функций, здесь содержатся только объявления подпрограмм.   
Создадим  заголовок  пакета BOOKS_DELIV, поместив  в  него  описа-
ния двух процедур и функции из раздела 13.7. 
CREATE  OR  REPLACE PACKAGE  BOOKS_DELIV IS  
  PROCEDURE  INCREASE  
      (CODE_BOOK  NUMBER);   
  PROCEDURE  ADD_BOOKS (CODE_BOOK  NUMBER, QUANTITY   
      NUMBER,  SALESMAN  VARCHAR2); 
   FUNCTION  TEST_B (SALESMAN  VARCHAR2)  
   RETURN BOOLEAN; 
END BOOKS_DELIV; 
Тело  пакета
 – это  объект  словаря  данных,  хранящийся  отдельно  от 
заголовка пакета. Успешная компиляция тела пакета возможна лишь при 
условии успешной компиляции заголовка пакета.  
Тело пакета создается следующей структурой: 
CREATE [OR REPLACE] PACKAGE  BODY имя {IS|AS}  
   --описания закрытых типов и объектов; 
     --определения локальных функций и процедур; 
 
178


 
     --определения общедоступных функций и процедур; 
END [имя]; 
Тело  пакета  реализует  спецификацию  пакета.  В  нем  должны  быть 
описаны все процедуры и функции, предварительно объявленные в заго-
ловке пакета. При этом обязательно должны совпадать названия подпро-
грамм, набор параметров, порядок их следования и описание. Кроме это-
го, можно также объявить и определить дополнительные объекты пакета, 
которые называются личными (private) или закрытыми. Так как личные 
объекты  объявляются  в  теле  пакета,  а  не  в  его  спецификации,  к  ним 
можно  обращаться  только  из  объектов  пакета.  Доступ  к  ним  из  других 
блоков PL/SQL невозможен.  Тело  пакета  не  является  обязательной  его 

Достарыңызбен бөлісу:
1   ...   154   155   156   157   158   159   160   161   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет