Оценить:
 Рейтинг: 0

Язык PL/SQL

Год написания книги
2017
<< 1 ... 3 4 5 6 7 8 9 10 11 ... 80 >>
На страницу:
7 из 80
Настройки чтения
Размер шрифта
Высота строк
Поля

Условные команды и команды перехода

В PL/SQL к условным командам относятся команды IF и CASE, переходы реализуются командами GOTO и NULL.

Условная команда IF

Условная команда IF позволяет проверить заданное логическое условие и, в зависимости от результатов проверки (TRUE, FALSE или UNKNOWN), выполнить различные ветви кода. В PL/SQL имеется три формы команды IF:

IF THEN END IF

IF THEN ELSE END IF

IF THEN ELSIF ELSE END IF

Границы действия команды IF определяются закрывающими ключевыми словами END IF. Альтернативная последовательность команд следует после ключевого слова ELSE, для расширения структуры ветвления дополнительно можно задать дополнительное условие после ключевого слова ELSIF.

Команда IF имеет следующий синтаксис:

IF условие 1 THEN

команды 1; – ветвь 1

ELSIF условие 2 THEN

команды 2; – ветвь 2

ELSE

команды n; – альтернативная последовательность команд (ELSE-ветвь)

END IF;

Команды первой ветви кода выполняются только тогда, когда проверка условия определяет его истинность (TRUE). Если же проверка условия определяет FALSE или UNKNOWN (например, при сравнении с NULL), то выполняются команды ELSE-ветви.

Приведем пример программы, которая выводит сообщение о классе излучения в зависимости от значения вводимого параметра длины волны (длина волны предполагается заданной в микронах).

SQL> DECLARE

2 lamda NUMBER; – Длина волны

3 text1 VARCHAR2(30) := 'Инфракрасное излучение';

4 text2 VARCHAR2(30) := 'Видимый свет';

5 text3 VARCHAR2(30) := 'Ультрафиолет';

6 – исполняемый раздел

7 BEGIN

8 lamda := &Input_Data;

9 DBMS_OUTPUT.PUT_LINE('');

10 IF (lamda > 0.65)

11 THEN DBMS_OUTPUT.PUT_LINE(text1);

12 ELSIF (lamda < 0.41)

13 THEN DBMS_OUTPUT.PUT_LINE(text3);

14 ELSE

15 DBMS_OUTPUT.PUT_LINE(text2);

16 END IF;

17 END;

/

Enter value for input_data: 0.33

old 8: lamda := &Input_Data;

new 8: lamda := 0.33;

Ультрафиолет

PL/SQL procedure successfully completed.

При сложной логике ветвления и проверке многочисленных условий рекомендуется вместо вложенных команд IF использовать условную команду CASE, так как с ней получается более понятный и компактный код.

Условная команда CASE

Команда CASE имеет две разновидности:

простая команда CASE, которая связывает одну или несколько последовательностей команд PL/SQL с некоторыми значениями (выполняемая последовательность команд выбирается при совпадении результата вычисления заданного выражения со значением, связанным с этой последовательностью команд);

поисковая команда CASE, которая выбирает для выполнения последовательность команд в зависимости от результатов проверки списка логических условий (выполняется последовательность команд, связанная с первым логическим условием в списке, результат проверки которого оказался равным TRUE).

Несмотря на громоздкое описание, работать с командой CASE обеих разновидностей просто и удобно.

Простая команда CASE имеет следующий синтаксис:

CASE выражение

WHEN результат 1 THEN
<< 1 ... 3 4 5 6 7 8 9 10 11 ... 80 >>
На страницу:
7 из 80