Иван Сергеевич Задворьев

Язык PL/SQL


Скачать книгу

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

      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;

      WHEN результат 2 THEN

      последовательность команд 2;

      …

      ELSE

      альтернативная последовательность команд;

      END CASE;

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

      SQL> DECLARE

      2 english_termin VARCHAR2(20);

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

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

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

      6 text4 VARCHAR2(30) := 'Неизвестный термин';

      7 BEGIN

      8 english_termin := &Input_Data;

      9 CASE english_termin

      10 WHEN 'Infrared radiation' THEN DBMS_OUTPUT.PUT_LINE(text1);

      11 WHEN 'Visible light' THEN DBMS_OUTPUT.PUT_LINE(text2);

      12 WHEN 'Ultraviolet' THEN DBMS_OUTPUT.PUT_LINE(text3);

      13 ELSE DBMS_OUTPUT.PUT_LINE(text4);

      14 END CASE;

      15 END;

      16 /

      Enter value for input_data: 'Ultraviolet'

      old 8: english_termin := &Input_Data;

      new 8: english_termin := 'Ultraviolet';

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

      PL/SQL procedure successfully completed.

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

      CASE

      WHEN верно логическое условие 1 THEN

      последовательность команд 1;

      WHEN верно логическое условие 2 THEN

      последовательность команд 2;

      …

      ELSE

      альтернативная последовательность