Продолжаем разговор о PL/SQL. Начнем рассмотрение организации и синтаксиса программы на PL/SQL: структурой блока, набором символов, а также правилами для идентификаторов, разделителей операторов и комментариев.
Как и в большинстве процедурных языков, в PL/SQL наименьшей значимой единицей группировки кода является блок.
Блок - это конструкция, обеспечивающая выполнение фрагмента кода и определяющая границы видимости переменных и область действия обработчиков исключений. PL/SQL позволяет создавать анонимные блоки (блоки кода, не имеющие названия) и именованные блоки (это могут быть процедуры, функции или триггеры).
В последующих статьях моего блога мы рассмотрим структуру блока и подробно остановимся на анонимных блоках. Различные виды именованных блоков будут описаны далее.
Разделы блока PL/SQL
Блок PL/SQL может включать в себя до четырех разделов (см. схему ниже), лишь один из которых является обязательным.
Заголовок
IS
Раздел объявлений
BEGIN
Раздел исполнения
EXCEPTION
Раздел исключений
END;
Заголовок
Используется только для именованных блоков. Заголовок определяет, каким образом будет вызываться именованный блок или про-грамма. Необязательный раздел.
Раздел объявлений
Определяет переменные, курсоры и подблоки, которые упоминаются в разделах исполнения и исключений. Необязательный раздел.
Раздел исполнения
Содержит операторы, которые будет выполнять ядро PL/SQL при исполнении блока. Обязательный раздел.
Анонимные блоки PL/SQL
Если кто-то хочет сохранить анонимность, он не называет своего имени. Именно так и поступает анонимный блок в PL/SQL (см. схему ниже): в нем просто отсутствует раздел заголовка, такой блок начинается с DECLARE
или BEGIN
. Это означает, что его нельзя будет вызвать из какого-то другого блока, так как не на что установить ссылку. Анонимные блоки служат контейнерами для операторов PL/SQL и обычно включают в себя вызовы процедур и функций.
В общем виде синтаксис анонимного блока PL/SQL будет таким:
[ DECLARE
. . . объявления .. . ]
BEGIN
... один или несколько исполняемых операторов .. .
[ EXCEPTION
... операторы обработки исключений ... ]
END;
В квадратные скобки заключены необязательные элементы конструкции. В блоке должны быть операторы BEGIN и END, а также хотя бы один исполняемый оператор. Рассмотрим несколько примеров анонимных блоков:
• Наиболее короткий анонимный блок:
BEGIN
DBMS_OUTPUT.PUT_LIN E(SYS DATE);
END;
• Блок с такой же функциональностью, в который добавлен раздел объявлений:
DECLARE
l_right_now VARCHAR2(9);
BEGIN
DBMS_OUTPUT.PUT_LINE (’Hello world');
END;
Анонимный блок, не имеющий разделов объявлений и исключений (только исполнение):
BEGIN
l_right_now := SYSDATE;
DBMS_OUTPUT.PUT_LINE(l_right_now);
END;
• Тот же блок с добавленным обработчиком исключений:
DECLARE
l_right_now VARCHAR2(9);
BEGIN
l_right_now := SYSDATE;
DBMS_OUTPUT.PUT_LINE(l_right_now);
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('I bet l_right_now is too small '
|| 'for the default date format!')
END;