Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по субд Крупская.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

42 Классификация блоков pl/sql.

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

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

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

• В теле основной программысодержатся исполняемые операторы блока. Другими словами, тело – это часть блока PL/SQL, в которой определяются его функциональные возможности.

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

declare

/*раздел объявлений (переменные, типы, курсоры и др.)*/

begin

/*Основной раздел блока, называемый выполняемым. Содержит процедурные и SQL–операторы*/

exception

/*Раздел обработки исключительных ситуаций. Содержит операторы обработки ошибок*/

end;

Вообще говоря, обязательнымв блоке является только выполняемый раздел, кроме того, он должен содержать, по крайней мере, один выполняемый оператор.

43 Управление блоками в sql*Plus.

Утилита SQL*Plus– это, пожалуй, самый простой из инструментов разработки программPL/SQL. ОбычноSQL*Plusпоставляется вместе с серверомORACLEи является частью стандартной системы. Он дает пользователям возможность вводитьSQL– операторы и блоки вPL/SQLдиалоговом режиме. При выполненииSQL– оператора вSQL*Plusзаканчивать его необходимо точкой с запятой (см. вышеприведенные примеры). Точка с запятой не является элементом собственно оператора – это признак его окончания. В блоке же точка с запятой является синтаксическим элементом самого блока, а не признаком окончания некоторого оператора. При вводе пользователем ключевого словаDECLAREилиBEGINSQL*Plusраспознает это и понимает, что пользователь запускает на выполнение блокPL/SQL, а неSQL– оператор. Признаком завершения блока является косая черта, которая соответствует командеRUNSQL*Plus.

Как уже указывалось, хранимые процедуры можно вызывать только из выполняемого раздела или из раздела обработки исключительных ситуаций блока PL/SQL. ВSQL*Plusпредлагается удобный и более простой способ вызова хранимых процедур – команда ЕХЕСUТЕ, которая принимает заданные аргументы, автоматически размещает ключевые словаBEGINиENDперед и после указанных аргументов, а затем передает полученный блок серверу базы данных на выполнение.

44 Лексические единицы pl/sql

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

Идентификатор- это имя объекта PL/SQL, которым может быть:

 константа;

 скалярная переменная;

 составная переменная (запись или коллекция);

 исключение;

 процедура;

 функция;

 пакет;

 тип;

 курсор;

 зарезервированное слово;

 метка.

К идентификаторам PL/SQL предъявляются следующие требования:

 длина - до 30 символов;

 должны начинаться с буквы;

 не должны содержать пробелов (но могут включать символы "$", "_" и "#").

Литерал- это значение, с которым не связан идентификатор, оно существует "само по себе". Литерал может быть представлен одним из следующих типов данных: NUMBER (например, 415, 21,6 или NULL), STRING (например, 'Предложение', '01-FEB-2003', NULL) либо BOOLEAN (а именно TRUE, FALSE или NULL).

Заметьте, что в PL/SQL нет возможности непосредственно задать литеральное значение даты. Значение '01-FEB-2003' - это строковый литерал, то есть последовательность символов, заключенная в одинарные кавычки. Такую строку можно конвертировать в дату с помощью PL/SQL или SQL, но внутри базы данных Oracle для значений дат используется только двоичное представление.

Строковый литерал может состоять из одного или более символов, входящих в набор символов PL/SQL. Литерал длиной нуль символов представляется как '' (две последовательные одинарные кавычки без символов между ними). В Oracle9i строковый литерал нулевой длины имеет значение NULL и тип данных CHAR (строка нулевой длины). В отличие от идентификаторов, строковые литералы в PL/SQL чувствительны к регистру символов.

Разделитель в виде точки с запятой. Программа на PL/SQL представляет собой последовательность объявлений переменных и операторов, границы которых определяются не кодом конца строки, а символом точки с запятой (;). Один оператор часто состоит из нескольких строк. В нем вы видите два символа точки с запятой. Первый отмечает конец единственного оператора присваивания в конструкции IF...END IF, а второй - конец оператора IF. Данный оператор можно разместить и в одной строке, причем результат будет одинаковым.

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