Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с Oracle / Язык PL SQL.docx
Скачиваний:
11
Добавлен:
28.06.2021
Размер:
768.74 Кб
Скачать

Управление ходом выполнения программы

Процедурные программы имеют определенный порядок вы­полнения содержащихся в ней операторов. Программы на языке PL/SQL могут управлять ходом исполнения операторов, используя:

  • итеративную логику (циклы);

  • условную логику (if-then-else);

  • последовательную логику (опера­торы перехода goto).

Для выполнения ряда операторов программы определенное количество раз в программе могут использоваться циклы. Рассмотрим анонимный блок, иллюстрирующий выполнение ти­пичного цикла. Такой цикл начинается ключевым словом LOOP и заканчивается клю­чевыми словами END LOOP.

Любой базовый цикл должен включать в себя команду EXIT WHEN или EXIT для окончания цикла, в противном случае он будет выполняться бесконечно.

В примере использована процедура DBMS_OUTPUT.PUT для вывода информации без перехода на следующую строку.

Рассмотрим анонимный блок, иллюстрирующий использование цикла WHILE. Оператор LOOP этого цикла начинается условием, находящимся после ключевого слова WHILE, и заканчивается ключевыми словами END LOOP.

Обратите внимание на то, что определение цикла WHILE требует обя­зательного задания условия, определяющего, когда цикл должен закончиться.

В заключение рассмотрим анонимный блок, описывающий использование третьего типа цикла FOR. Ключевое слово LOOP цикла FOR определяет начало цикла, а ключевые слова END LOOP – его окончание.

В цикле FOR может быть объявлена своя собственная целая переменная (счетчик), являющаяся частью оператора цикла FOR ... LOOP. Ключевое слово LOOP и цикл FOR автоматически увеличивают или уменьшают значение переменной счетчика, поэтому у пользователя нет необходимости делать это в теле цикла.

Оператор IF ... ELSIF ... ELSE позволяет реализовать в программе PL/SQL условную логику. Общий синтаксис оператора имеет вид:

IF condition THEN

statement1;

statements2;

ELSIF condition THEN

statement3;

statement4;

ELSE

statement5;

statement6;

END;

Оператор IF выполняется следующим образом:

  • Вычисляется результат логического условия IF, и если он равен TRUE, то выполняются операторы блока THEN. Если результатом является значение FALSE или UNKNOWN (например, когда в условии выражение сравнивается с неинициализированной переменной), то операторы блока THEN не выполняются.

  • Необязательный блок ELSIF задает альтернативное условие. Если его результатом является значение TRUE, то выполняются операторы следующего блока THEN. Если условие блока ELSIF дает значение FALSE или UNKNOWN, то операторы последующего блока THEN не выполняются. Оператор IF может содержать несколько блоков ELSIF.

  • Необязательный блок ELSE задает последовательность операто­ров, которые выполняются, когда ни одно из условий предыдущих блоков IF и ELSIF не дает значение TRUE (не выполняется).

Рассмотрим следующий анонимный блок PL/SQL. В программе используется SQL-функция MOD и условия в операторе IF для определения того, является ли счетчик цикла FOR кратным 3 или 5 либо кратным и 3 и 5.