- •5. Назначение языка pl/sql и его языковых конструкций
- •5.1. Начальные сведения
- •5.2. Языковые конструкции, обеспечивающие модульность
- •Хранимые процедуры
- •Хранимые функции
- •Триггеры
- •Отличие хранимых процедур от sql-сценариев
- •5.3. Структура блока pl/sql
- •Секция заголовка
- •Секция объявлений
- •Выполняемая секция
- •Секция исключений
- •5.4. Создание простой pl/sql-процедуры
- •Вызов процедур и функций
- •5.5. Переменные и константы pl/sql
- •Объявление переменных pl/sql
- •Объявление констант pl/sql
- •Присваивание значений переменным
- •Использование переменных
5. Назначение языка pl/sql и его языковых конструкций
5.1. Начальные сведения
Аббревиатура PL/SQL расшифровывается как Procedural Language/Structured Query Language (процедурный язык/структурированный язык запросов, или процедурное расширение языка SQL). Этот язык представляет собой среду программирования, которая встроена непосредственно в базу данных Oracle.
Впервые PL/SQL появился в шестой версии Oracle в 1988 г. Вначале этот язык применялся в пользовательском интерфейсе Oracle SQL*Forms для добавления в формы сложной логики. PL/SQL заменил более старый пошаговый метод реализации программной логики. PL/SQL оказался достаточно простым языком программирования, напоминающим Ada или С. PL/SQL используется для считывания информации, заполнения баз данных, создания хранимых объектов и даже для отображения Web-страниц. PL/SQL используется во многих продуктах, таких как Oracle server, Oracle Forms, Oracle Reports, Oracle Warehouse Builder, Oracle Applications, Oracle Portal. Учебный материал электронного модуля описывает версию языка PL/SQL, реализованную в Огасlе9i.
Все эти программы в той или иной степени используют PL/SQL. PL/SQL может взаимодействовать с большинством продуктов Огасlе9i, а программы PL/SQL могут вызываться из следующих сред разработки:
SQL*Plus
Oracle Enterprise Manager
прекомпиляторы Oracle (Pro*C, Pro*COBOL и др.)
Oracle Call Interface (OCI)
Server Manager
Огасlе9i Application Server
Java Virtual Machine (JVM)
База данных Оrасlе9i — это не просто база данных. Она является также и процессором, поддерживающим различные языки программирования. Так, Оrасlе9i содержит процессор Java со встроенной виртуальной машиной Java (Java Virtual Machine — JVM), а также процессор PL/SQL. Таким образом, программный код может сохраняться в базе данных и выполняться в случае необходимости. Благодаря этому не нужны другие программные продукты. Процессор PL/SQL тесно интегрирован с базой данных. Рис. 5.1 демонстрирует процесс использования PL/SQL внутри базы данных и за ее пределами.
Рис. 5.1. Использование PL/SQL
Центральное место занимает сервер Оrасlе9i, который является основным процессором базы данных. Он координирует все обращения к базе данных. Когда программа посылает на сервер запрос о выполнении кода PL/SQL, база данных Oracle загружает откомпилированный код в память, после чего процессоры PL/SQL и SQL выполняют этот код. Процессор PL/SQL осуществляет реализацию программной логики и управление памятью, которое необходимо для выполнения программы. Процессор SQL направляет БД запросы, связанные с получением и обработкой информации. В итоге получается замкнутая система, позволяющая писать и выполнять эффективно работающие программы.
PL/SQL предоставляет средства, позволяющие выполнять сложную обработку информации. Например, если необходимо регулярно подводить итоги и оформлять их в виде сводной таблицы, можно воспользоваться пакетами (packages). Если нужно своевременно узнавать о поступлении крупных заказов, чтобы привлекать для их обслуживания дополнительных поставщиков, то PL/SQL предоставляет триггеры (triggers), выдающие ведомление, как только объем сделанного заказа превысит установленный вами предел. Можно использовать хранимые процедуры (stored procedures) PL/SQL для определения эффективности работы служащих, чтобы на основе этих данных принимать решение о выплате премий. Функции PL/SQL могут рассчитывать налоговые вычеты для служащих.
PL/SQL позволяет использовать все команды манипулирования даннымии управления транзакциями, присутствующие в SQL, а также все SQL-функции и операторы. За счет этого можно гибко и безопасно манипулировать данными Oracle. Кроме того, PL/SQL полностью поддерживает типы данных SQL, что уменьшает количество преобразований типов при передаче информации между приложениями и базой данных. PL/SQL также поддерживает динамический SQL — усовершенствованную программную технологию, позволяющую делать приложения более гибкими и универсальными. Во время своего выполнения программы могут создавать и обрабатывать SQL-операторы определения данных, управления данными и сеансами.