Программа на языке PL/SQL состоит из блоков. Блок PL/SQL – это люба часть кода PL/SQL, в которой имеются операторы BEGIN и END. Он может иметь или не иметь операторы DECLARE и EXCEPTION. Блоки имеют следующую структуру:
DECLARE
(список объявлений переменных)
BEGIN
(список команд SQL и PL/SQL)
EXCEPTION
(обработчики исключений)
END;
Программы PL/SQL можно разделить на две категории по способу их хранения. К первой категории относят программы, хранящиеся в виде обычных текстовых файлов. В этом случае текст программы оформляется в виде безымянного (анонимного) блока. Безымянные блоки не имеют внешних параметров и не могут быть вызваны из других программ. Все примеры данного параграфа являются безымянными блоками.
Вторая категория программ – это хранимые в базе данных Oracle программы PL/SQL. Хранимые программы (процедуры, функции, пакеты и триггеры) будут описаны в параграфе 9.
5.2. Раздел DECLARE
Раздел DECLARE является необязательным разделом блока PL/SQL. Этот раздел необходим, если требуется объявить переменные или другие программные конструкции, которые будут использоваться в разделах BEGIN и/или EXCEPTION. В показанном ниже примере переменные A и B объявляются в разделе DECLARE, а затем используются в разделе BEGIN.
DECLARE
A number;
B number;
BEGIN
A := 2;
B := A * 100;
END;
5.3. Раздел BEGIN-END
Раздел BEGIN-END является обязательным разделом блока PL/SQL – именно в нем находятся исполняемые команды программы. Внутри данного раздела могут размещаться другие (внутренние) блоки PL/SQL. Глубина вложений блоков друг в друга не ограничена. В примере показан блок с вложенным в него другим блоком. Следует обратить внимание, что в каждом из блоков в разделе DECLARE объявлены переменные A и B. Однако для каждого блока это свои переменные. Во внешнем блоке переменные A и B, объявленные во внутреннем блоке, не видны. А во внутреннем блоке переменные внешнего блока видны, но в данном примере они «перекрыты» своими объявлениями переменных с такими же именами – поэтому внешние переменные тоже не видны.
DECLARE
A number;
B number;
BEGIN
A := 2;
B := A * 100;
DECLARE
A number;
B number;
BEGIN
A := 3;
B := A * 100;
dbms_output.put_line('1. B='||B);
END;
dbms_output.put_line('2. B='||B);
END;
Если выполнить эту программу то будут выведены две строки:
1. B=300
2. B=200
5.4. Раздел EXCEPTION
Раздел EXCEPTION - необязательный раздел блока PL/SQL. Этот раздел используется для обработки ошибок, возникающих при исполнении (а не во время компиляции) программы. Если при исполнении какой-либо из команд раздела BEGIN возникает ошибка, то управление сразу же передается в раздел EXCEPTION. Обратно из раздела EXCEPTION в раздел BEGIN управление не передается.
Внутри данного раздела могут размещаться другие (внутренние) блоки PL/SQL.
В разделе EXCEPTION находятся так называемые обработчики ошибок. Количество обработчиков может быть произвольным и определяется программистом. Каждые обработчик – это отдельная программная секция, которая начинается фразой WHEN тип_ошибки THEN. В этой фразе слова WHEN и THEN – ключевые слова PL/SQL, а тип_ошибки – определяет тип обрабатываемой в данной секции ошибки. В Oracle PL/SQL ошибки могут быть предустановленного типа и ошибки, определяемые пользователем. Таким образом каждый обработчик обрабатывает ошибки только указанного типа. Есть одно исключение из этого правила, о чем будет сказано ниже.
Вслед за фразой WHEN тип_ошибки THEN размещаются любые операторы программы, которые программист сочтет необходимыми. Обычно это команды записи в журнальные таблицы для фиксации факта возникновения ошибки (тип ошибки, время ее возникновения и т.п.) или вызов процедуры, в которой выполняется дополнительная обработка.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.