русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ИСПОЛЬЗОВАНИЕ ОБЪЕКТОВ МОДУЛЯ


Дата добавления: 2013-12-24; просмотров: 830; Нарушение авторских прав


Модули

Модуль (package) – это группа процедур, функций и других конструкций, хранимых вместе в базе данных как одна единица. Модули особенно полезны для компоновки нескольких процедур и функций, имеющих отношение к конкретному приложению баз данных.

Модуль состоит из двух частей: описания и тела.

• Описание модуля (package specification) определяет интерфейс связи с этим модулем. В описании модуля объявляются все переменные и именованные константы, курсоры, процедуры, функции и другие конструкции модуля, которые необходимо сделать доступными для программ, внешних по отношению к этому модулю. Другими словами, всё объявленное в описании модуля является общим.

• В теле модуля (package body) определяются все общие процедуры и функции, объявленные в описании модуля. Кроме того, в тело модуля могут включаться определения других конструкций, не указанных в его описании. Такие конструкции модуля являются частными, т. е. доступными только для программ внутри модуля.

Все переменные, константы и курсоры, объявленные в описании или в теле модуля, считаются глобальными. В отличие от частных переменных, констант и курсоров, объявленных в определенных процедурах и функциях, глобальные конструкции доступны всем процедурам и функциям модуля. Во время сеанса работы состояние глобальных конструкций не зависит от действий, выполняемых какими-либо подпрограммами модуля.

Ниже приведен пример определения описания модуля и его тела:

сreate or replace package part_mgmt is

--глобальная переменная

сurrent_part parts %rowtype;

--процедуры и функции

--insert_part вводит новый элемент ассортимента в таблицу parts

--update_part_unitprice обновляет цену элемента ассортимента

--delete_part удаляет элемент ассортимента

---------------------------------------------------------------------------------



procedure insert_part (part_record parts %rowtype);

procedure update_part_unitprice (part_id in integer, new_price in number);

procedure delete_part (part_id in integer);

end part_mgmt;

 

сreate or replace package body part_mgmt is

procedure insert_part (part_record parts %rowtype) is

dup_primary_key exception;

begin

insert into parts

values (part_record.id, part_record.unitprice, part_record.description);

exception

when dup_ primary_key then

raise_application_error (-20001,’Дубликат ID’);

when others then

raise_application_error (-20002,’Неопределенная ошибка’);

end insert_part;

------------------------------------------------------------------------------------

определение других процедур и функций модуля

end part_mgmt;

Как и в хранимых процедурах и функциях, вид ссылок на объекты модуля зависит от вызывающей среды. Однако приложения ссылаются на общие объекты модуля, как правило, при помощи стандартной уточняющей записи через точку. В следующем анонимном блоке PL/SQL демонстрируются способы ссылки на объекты модуля.

 

declare

begin

/*ОПЕРАТОР, ИНИЦИАЛИЗИРУЮЩИЙ ГЛОБАЛЬНУЮ ПЕРЕМЕННУЮ МОДУЛЯ*/

select * into sales.part_mgmt.current_part

from sales.parts

where id = 3;

/*ОПЕРАТОР, ВЫЗЫВАЮЩИЙ ПРОЦЕДУРУ INSERT_PART РАНЕЕ ОПРЕДЕЛЕННОГО МОДУЛЯ*/

sales.part_mgrnt.insert_part (3, 500.00,'Network Computer');

 

В ORACLE встроено несколько служебных модулей, предлагающих ряд дополнительных возможностей, недоступных в SQL или PL/SQL. Подробная информация по работе с некоторыми из них (DBMS_OUTPUT – модуль серверного вывода, DBMS_SQL – модуль “динамического SQL”, UTL_FILE – модуль файлового ввода/вывода, DBMS_PIPE – модуль взаимодействия между соединениями) будет предложена в последующих разделах.



<== предыдущая лекция | следующая лекция ==>
ВЫЗОВ ПРОЦЕДУР И ФУНКЦИЙ | Триггеры баз данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.035 сек.