Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
17.04.2018
Размер:
189.44 Кб
Скачать

Секция заголовка

Секция заголовка блока бывает разных видов в зависимости от того, какому компоненту программы (процедуре, функции, триггерe) принадлежит блок. Заголовок базового блока верхнего уровня для функции, процедуры или триггера содержит спецификацию этой функции, процедуры или триггера. Для анонимных блоков заголовок содержит только ключевое слово DECLARE. Для помеченных блоков заголовок содержит имя метки, заключенное в двойные угловые скобки, за которым следует ключевое слово DECLARE:

<<just_a_label>>

DECLARE

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

Секция объявлений

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

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

Когда выполнение базового блока завершается, все элементы, объявленные в секции объявлений, перестают существовать. Элементы, объявленные в секции объявлений базового блока, могут использоваться только в пределах этого блока. Таким образом, после выполнения в среде SQL*Plus блока, приведенного в качестве примера, переменную Num_a будет невозможно передать другой процедуре PL/SQL. Num_a и Num_b после выполнения блока просто исчезают. Но если из выполняемой секции блока будет вызываться функция или процедура PL/SQL, то Num_a и Num_b можно передать в качестве фактических параметров.

Одним словом, все, что находится в секции объявлений, принадлежит блоку и может использоваться только внутри него, а следовательно, существует только на протяжении его времени жизни. Часть кода, в которой может использоваться переменная, называется областью видимости (scope). Областью видимости переменных Num_a и Num_b является блок, в котором они объявлены. Эта область видимости простирается от начала секции объявлений и до конца выполняемой секции.

Выполняемая секция

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

BEGIN

один и более PL/'SQL-операторов

[секция исключений]

END [имя функции или процедуры];

В выполняемом коде PL/SQL чаще всего встречается оператор присваивания (:=). Он указывает, что нужно вычислить выражение справа и поместить результат в переменную слева. Выполняемая секция приведенного примера содержит три оператора присваивания. Первый оператор присваивает переменной Num_b нулевое значение.

Второй оператор присваивает переменной Num_a значение Num_a, деленное на Num_b. После успешного выполнения этого оператора значение Num_a изменится.

Третий оператор присваивает переменной Num_b значение 7.

Соседние файлы в папке Lab5