DECLARE
раздел объявлений
BEGIN
исполняемый раздел
EXCEPTION
раздел обработки исключений
END;
В разделе заголовка указываются:
тип блока (процедура, функция);
имя блока (имя процедуры, функции);
имена параметров, их типы данных и режимы передачи значений.
В разделе объявлений объявляются пользовательские типы данных, переменные и константы, которые потом используются в исполняемом разделе и разделе обработки исключений. В исполняемом разделе реализуется собственно логика программы. В вырожденном случае там может присутствовать только одна «пустая» команда NULL. Обработка исключений рассматривается далее в отдельном параграфе.
Ключевые слова BEGIN и END в языке PL/SQL являются операторными скобками, подобными символам { и } в других языках программирования и отмечают начало исполняемого раздела и конец блока. Каждая команда в PL/SQL должна завершаться точкой с запятой (символом ; ).
Виды блоков PL/SQL
В PL/SQL есть два вида блоков:
именованные блоки (с разделом заголовка);
анонимные блоки (без раздела заголовка).
Именованные блоки в свою очередь тоже бывают двух видов:
именованные блоки хранимых в базе данных программ (процедур, функций, пакетов и триггеров);
именованные блоки в разделах объявлений других блоков (анонимных или именованных).
Хранимые программы (stored programs) являются объектами базы данных Oracle и создаются DDL-командой CREATE, после которой записывается именованный блок PL/SQL. Имя блока, указанное в разделе заголовка, будет являться именем объекта базы данных.
Анонимные блоки (anonymous blocks) раздела заголовка не имеют. Если блок не имеет раздела заголовка, то он не имеет и имени, которое в этом разделе указывается, поэтому такие блоки и называются анонимными.
Анонимные блоки либо вкладываются в другие блоки, либо хранятся в виде текстовых файлов-сценариев. В последнем случае анонимные блоки, как правило, используются для вызова хранимых программ или для автоматизации задач администрирования баз данных.
Анонимный блок-сценарий file1.sql
Вложенные анонимные блоки
в именованном блоке хранимой программы
DECLARE
i INTEGER;
– именованный блок процедуры proc1
– в разделе анонимного блока
PROCEDURE proc1 IS
BEGIN
NULL;
END;
BEGIN
– вызов процедуры proc1
proc1;
END;
– именованный блок процедуры proc2
CREATE PROCEDURE proc2 AS
BEGIN
– родительский анонимный блок,
– вложенный в именованный proc2:
DECLARE
BEGIN
– еще один анонимный блок
– вложенный в родительский:
DECLARE
BEGIN
NULL;
END; – конец вложенного блока
END; – конец родительского блока
END;– конец именованного блока proc2
Комментарии
В любом месте исходного кода на