Oracle/PLSQL анонимные блоки

В этом учебном материале вы узнаете, как использовать блоки в Oracle PL/SQL с синтаксисом и примерами.

Описание

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

Структура блока

Структура блока PL/SQL:

DECLARE
--объявление переменных
BEGIN
--исполняемые операторы
EXCEPTION
--обработка исключений
END;

Описание структуры блока PL/SQL

DECLARE
Необязательный. Раздел деклариорвания переменных, курсоров, типов, процедур и функций для использования в блоке. Область действия является локальной для блока. Каждое объявление должно заканчиваться точкой с запятой.
BEGIN - END
Обязательный. Раздел в котором исполняются один или несколько операторов PL/SQL. Должен быть как минимум один исполняемый оператор. Каждый оператор должен заканчиваться точкой с запятой. Блок BEGIN-END может содержать вложенные блоки BEGIN-END.
EXCEPTION
Необязательный. Раздел обработки исключительных ситуаций или "отлова" ошибок.

Примеры

В приведенном иже примере показан самый простейший допустимый блок, который ничего не делает.

Пример блока PL/SQL с одной переменной

Пример встроенного блока PL/SQL

Пример встроенного блока PL/SQL с переменной

Пример встроенный блок PL/SQL и повторяющиеся имена переменных

Пример видимости переменных в блоках PL/SQL

В этом примере возникнет исключительная ситуация по причине того, что переменная l_inner_var объявлена во встроенном блоке и для внешнего блока не видна. Тогда, как переменная l_outer_var из внешнего блока видна в обоих.

Пример блока с вызовом процедуры

В этом примере мы создали процедуру hello, которая выводит на экран простое приветствие. Затем в следующем блоке мы вызываем эту процедуру. Если вам процедура hello больше не понадобиться, то ее можно удалить командой DROP PROCEDURE hello;

Пример с многими вложенными блоками PL/SQL

В следующем примере показаны вложенные блоки.

В приведенном выше примере, PL/SQL блоки выполняются начиная с внутренних и заканчивая наружными.

Пример блока с разделом EXCEPTION

В следующем примере рассмотрим блок с разделом EXCEPTION.

Чтобы в будущем не возникало ошибок, мы добавим раздел обработки ошибок EXCEPTION.
С помощью встроенной исключительной ситуации NO_DATA_FOUND наш пример будет выглядеть так:

В этом примере ошибка перехватывается обработчиком исключений, что позволит успешно выполнить код.

Пример блока который выводит символьный треугольник

В следующем примере с помощью функции CHR(), мы построим символьный треугольник.