Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выборка PL.SQL.docx
Скачиваний:
4
Добавлен:
20.07.2019
Размер:
316.25 Кб
Скачать
  1. Управляющие структуры pl/sql

    1. IF-THEN-ELSE

Синтаксис оператора IF-THEN-ELSE (если-то-иначе):

где логическое_выражепие — любое выражение, результатом которого является логическое значение. Условия ELSIF и ELSE необязательны, причем условий ELSIF может быть сколь угодно много. Функционирование блока происходит в точности так, как это указано с помощью клю­чевых слов. Если первое условие истинно (FALSE или NULL считается ложным), то выполняется первая последовательность операторов, иначе проверяется следующее условие (после следующего ELSIF) или выполняются операторы из блока ELSE (если дошло до конца).

    1. Циклы

В 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; .