- •Модель клиент/сервер
- •Лексические единицы
- •Идентификаторы
- •Зарезервированные слова
- •Ограничители
- •Литералы
- •Комментарии
- •Блок pl/sql
- •Объявление переменных
- •Типы pl/sql
- •Числовые
- •Символьные
- •Семейство типов без обработки
- •Семейство типов даты.
- •Семейство типов rowid
- •Семейство логических типов
- •Семейство типов Trusted
- •Ссылочные типы.
- •Типы lob
- •Записи.
- •Использование %type, %rowtype
- •Подтипы, определяемые пользователями
- •Преобразование типов данных
- •Выражения и операции
- •Присваивание
- •Логические выражения
- •Управляющие структуры pl/sql
- •Операторы goto и метки
- •Использование sql в pl/sql
- •Связи баз данных
- •Ссылки на таблицы
- •Курсоры и курсорные переменные
- •Курсорные атрибуты
- •Циклы выборки
Управляющие структуры pl/sql
IF-THEN-ELSE
Синтаксис оператора IF-THEN-ELSE (если-то-иначе):
где логическое_выражепие — любое выражение, результатом которого является логическое значение. Условия ELSIF и ELSE необязательны, причем условий ELSIF может быть сколь угодно много. Функционирование блока происходит в точности так, как это указано с помощью ключевых слов. Если первое условие истинно (FALSE или NULL считается ложным), то выполняется первая последовательность операторов, иначе проверяется следующее условие (после следующего ELSIF) или выполняются операторы из блока ELSE (если дошло до конца).
Циклы
В PL/SQL имеется возможность повторения операторов посредством циклов (loops). Циклы подразделяются на четыре категории. Простые циклы, циклы WHILE и циклы FOR, курсорные циклы FOR.
Простые циклы
Синтаксис простых циклов (основных циклов языка) таков:
LOOP
последовательность_операторов;
EXIT [WHEN условие]; /*выход при условии */
IF условие THEN /*эквивалентный способ выхода*/
EXIT;
END IF;
END LOOP;
Последовательноетъ_опероторов будет выполняться бесконечно долго пока не выполнится хотя бы одно условие выхода или не встретит безусловный оператор ΕΧΙΤ.
Циклы WHILE
Синтаксис цикла WHILE (цикла с условием продолжения) таков:
WHILE условие LOOP
последовательность_опера торов;
END LOOP;
Проверка условия происходит перед каждой итерацией (шагом) цикла. Если условие истинно, выполняется последоватеяъность_операторов. Если же проверка условия дает ложное или NULL-значение, цикл завершается и управление программой передается оператору, следующему за оператором END LOOP. Для выхода можно использовать EXIT [THEN условие];
Числовые циклы FOR
В числовых же циклах FOR число итераций заранее определено. Синтаксис цикла FOR такой:
FOR счетчик_цикла IN [REVERSE] нижняя_граница .. верхняя_граница LOOP последовательность_операторов
END LOOP;
где счетчик_цикла — неявно создаваемая индексная переменная, нижняя_граница и верхняя_граница, а последовотельиость_оперпторов является содержимым цикла.
Границы цикла указываются один раз и определяют общее число итераций, проходимых счетчком_цикла от нижней_границы до верхней_граници. При этом счетчик каждый раз увеличивается на 1 до тех пор, пока цикл не завершится. Счетчик (индекс) цикла FOR неявно объявляется с типом BINARY_INTEGER. Объявлять его перед циклом необязательно. Если он все же объявлен, цикл скрывает это внешнее объявление так же, как объявление переменной во внутреннем блоке скрывает ее объявление во внешнем блоке. Если в цикле FOR указывается ключевое слово REVERSE (обратный порядок), индекс цикля будет изменяться от верхней границы до нижней. Обратите внимание, что в этом случае синтаксис остался прежним — нижняя граница по-прежнему указывается первой. Верхняя и нижняя границы могут быть любыми выражениями, для которых возможно преобразование в числовые значения.
Если никаких действий выполнять не нужно, можно использовать оператор NULL; .