четверг, 9 июня 2011 г.

Простой оператор CASE

Итак – сегодня все-таки решил возобновить практику публикации статей на тему языка PL/SQL. Просто решил активнее его начать изучать (сегодня как раз случай был – задачка по PL/SQL была волею случая поставлена передо мной простая, но – я ее не сумел решить нормально). В общем – учиться, учиться, учиться.

В сегодняшней статье я рассмотрю простой оператор CASE (в принципе, он должен быть хорошо знаком всем, кто когда-либо уже программировал на каком-нибудь языке программирования). Но – повторение тоже будет полезно. В следующий раз тоже расскажу о CASE, но – о немного другой его форме.

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

Чтобы сравнить оператор IF и CASE надо вспомнить код примера из прошлой статьи и посмотреть на следующий код:

CASE I
  WHEN I > 0 AND I < 100 THEN dbms_output.put_line(‘I в промежутке от 0 до 100’);
  WHEN I > 101 AND I < 1000 THEN dbms_output.put_line(‘I в промежутке от 101 до 1000’);
   WHEN I > 1001 AND I < 10000 THEN dbms_output.put_line(‘I в промежутке от 1001 до 10000’);
END CASE;

Оператор CASE более эффективен и понятен. Поэтому везде, где возможно – длинные последовательности IF-THEN-ELSIF необходимо заменять на оператор CASE.

Оператор CASE начинается с ключевого слова CASE. Затем следует переключатель, в качестве которого в примере выше выступает переменная i. Выражение для переключателя может быть очень сложным (можно использовать в нем даже вызов функций), но – обычно простую переменную используют. Выражение переключателя вычисляется только один раз. Тип данных переключателя может быть почти любым (кроме некоторых сложных типов).

За переключателем следует одно или несколько предложений WHEN, которые проверяются последовательно. Значение переключателя определяет, какое предложение будет выполнятся. Если значение переключателя равно значению выражения в каком-то предложение WHEN, выполняется это предложение WHEN.

Предложение ELSE работает также, как и в операторе IF – если не найдется никакого соответствующего предложение WHEN – то управление перейдет к ELSE. Если предложение ELSE нет, то PL/SQL автоматически добавит предложение (если рассмотреть пример выше – то получится следующее):

  CASE I case_not_found;

Поэтому, даже если вы не напишете действие по умолчанию – оно всегда будет присутствовать (PL/SQL автоматически добавит исключение case_not_found).

Заканчивается оператор CASE сочетанием ключевых слов END CASE.

Исключения, возникающие во время работы оператора CASE, обрабатываются в обычном режиме. То есть – нормальное выполнение программы прекращается – и выполнение передается обработчику исключения.

Вот он какой – простой оператор CASE. Все, пожалуй – пора заканчивать. В заключение хочу помочь людям, которые хотят оборудовать свои дома (или офисы) пожарными системами (как раз другу понадобилось так сделать). Я знаю, где можно заказать системы охранно-пожарной сигнализации у компании «Спектр технологий». На сайте компании приведен прайс-лист на услуги, каталог товаров (надо обязательно посмотреть) и – контакты, куда без них. В общем – пользуйтесь.

Комментариев нет:

Отправить комментарий