Процедурный язык запросов PL/SQL

Страницы работы

Содержание работы

Процедурный язык PL/SQL

Процедурный язык запросов PL/SQL – это процедурное расширение языка запросов SQL, разработанное фирмой Oracle. SQL является непроцедурным языком, т.к. пользователь просто отправляет на сервер базы данных команду SQL, а способ выполнения команды выбирает сам сервер. PL/SQL требует пошаговых инструкций для выполнения требуемых действий.

PL/SQL является языком третьего поколения, и имеет языковые элементы для объявления переменных, присвоения значений, проверки условий и ветвлений. Кроме того, он позволяет включать команды манипулирования данными (DML) и запросы в программные единицы, что позволяет контролировать выполнение транзакций с помощью PL/SQL.

PL/SQL блочно-ориентирован, это позволяет группировать логические единицы в блоки, каждый из которых может быть разбит на более мелкие подблоки. Сложная задача, таким образом, разбивается на отдельные легко управляемые модули, реализуемые в программной логике с помощью блоков.

PL/SQL позволяет описывать переменные простых и составных типов, константы, курсоры, исключения и использовать их в командах SQL и PL/SQL. Типы переменных могут быть описаны динамически, на основе типов данных столбцов таблицы базы данных. Типы данных PL/SQL и SQL совместимы и могут быть явно или неявно преобразованы друг в друга.

PL/SQL имеет управляющие структуры, позволяющие организовывать условное выполнение и цикличность обработки команд. Кроме того, PL/SQL имеет средства для обработки строк, возвращенных многострочным запросом SQL из базы данных.

PL/SQL имеет обработчик исключительных ситуаций (Exception Handler) для обработки ошибок и исключений, которые могут возникнуть во время выполнения кода PL/SQL. Таким образом могут быть обработаны, как ошибки сервера базы данных, так и исключения, определенные пользователем.

PL/SQL легко переносим, т.к. стандартизован для всех серверов фирмы Oracle, независимо от платформы. Программа, написанная на языке PL/SQL, может быть откомпилирована и выполнена на любом сервере Oracle без модификаций.

PL/SQL группирует команды SQL в единый блок и передает их серверу Oracle за одно обращение, снижая сетевой трафик.

Ядро PL/SQL

Программы, написанные на языке PL/SQL, обрабатываются ядром PL/SQL, которое может быть частью сервера Oracle или частью инструментального средства, в зависимости от того, как вызывается PL/SQL.

Если код PL/SQL запускается из SQL*Plus, oн обрабатывается ядром PL/SQL на сервере Oracle. Код сканируется, разбирается и компилируется. SQL, содержащийся в блоке, разделяется на отдельные команды, которые передаются Исполнителю команд SQL (SQL Statement Executor) на сервере Oracle. Набор данных, полученный в результате выполнения команды SQL, поступает в ядро PL/SQL для дальнейшей обработки. Процедурные выражения, не являющиеся командами SQL, передаются на выполнение Исполнителю процедурных команд (Procedure Statement Executor), который является частью ядра PL/SQL.

Одним из преимуществ использования блоков PL/SQL по сравнению с индивидуальным выполнением каждого оператора SQL является уменьшение загрузки сети, т.к. для передачи блока из приложения на сервер базы данных достаточно одной операции (Рисунок 1).

Рисунок 1 Выполнение блока PL/SQL и отдельных предложений SQL сервером Oracle

Блочная структура PL/SQL

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

DECLARE – декларативная необязательная секция
содержит объявление переменных, констант, курсоров, пользовательских исключений

BEGIN – обязательная секция выполняемого кода
содержит команды SQL для манипулирования данными в базе и команды PL/SQL для манипулирования данными в блоке

EXCEPTION – необязательная секция обработки исключений (ошибок или предупреждений)
определяет действия, связанные с обработкой ошибок сервера или пользовательских исключений, возникших в секции выполняемого кода

END;

Основной блок кода PL/SQL может использоваться в различных программных конструкциях:

Программная конструкция

Описание

Анонимный блок

Неименованный блок PL/SQL, встроенный в приложение или выполняемый интерактивно (например, из SQL*Plus). Описывается в той точке приложения, где будет выполняться и передается на выполнение ядру PL/SQL во время выполнения приложения

Хранимая процедура или функция

Именованный блок PL/SQL, который позволяет задавать параметры и может выполняться многократно на стороне сервера

Процедура или функция приложения

Именованный блок PL/SQL, который позволяет задавать параметры и может выполняться многократно на стороне клиента

Пакет

Именованный модуль PL/SQL, который группирует связанные процедуры, функции, идентификаторы

Триггер базы данных

Блок PL/SQL, связанный с таблицей базы данных и выполняемый автоматически

Триггер приложения

Блок PL/SQL, связанный с событием в приложении и выполняемый автоматически


Именованные блоки PL/SQL называются программными единицами. Программные единицы делятся на три категории:

§  Процедуры, позволяющие задавать параметры и выполняющие заданные действия

§  Функции, позволяющие задавать параметры, вычисляющие и возвращающие значения

§  Пакеты, объединяющие логически связанные процедуры и функции

Программные единицы подразделяются на хранимые и прикладные подпрограммы (подпрограммы приложения):

Хранимая подпрограмма

Прикладная подпрограмма

Хранится

В базе данных

В приложении

Выполняется

Из любого приложения или инструментального средства базы данных

Только из данного приложения

Подпрограмма может содержать до четырех секций:

§  Обязательная секция заголовка – определяет имя, тип и аргументы подпрограммы

§  Декларативная необязательная секция – содержит объявление локальных переменных, констант, курсоров, пользовательских исключений

§  Обязательная секция выполняемого кода – содержит команды SQL для манипулирования данными в базе и команды PL/SQL для манипулирования данными в блоке

§  Необязательная секция обработки исключений – определяет действия, связанные с обработкой ошибок сервера или пользовательских исключений, возникших в секции выполняемого кода

Синтаксические правила для блока PL/SQL

·  Идентификаторы могут содержать до 30 символов и должны начинаться с буквы

·  Зарезервированные слова могут использоваться в качестве идентификаторов только в том случае, если они заключены в кавычки (“SELECT”)

·  Не выбирайте для идентификатора имя, совпадающее с именем столбца таблицы базы данных, используемой в блоке. При выполнении команды SQL Oracle всегда предполагает, что используется ссылка на столбец

·  Предложение может занимать несколько строк, но ключевые слова переносить нельзя

·  Лексические единицы (идентификаторы или литералы) могут быть разделены пробелами

Похожие материалы

Информация о работе