В данной конфигурации выражение1, выражение1, … выражениеN могут быть любыми, а не только выражениями на равенство. При этом фраза CASE никаких выражений не содержит. Перепишем пример из п. 7.3, используя данный вариант оператора CASE.
DECLARE
H number;
BEGIN
select to_char(sysdate,’hh24’) into H from dual;
case
when (H>=8 AND H<=12) then
update my_tab set priznak=1;
when (H>=13 AND H<=17) then
update my_tab set priznak=2;
else
update my_tab set priznak=null;
end case;
END;
7.5. Оператор простого цикла (цикл LOOP)
Оператор цикла LOOP является основной конструкцией, позволяющей повторять выполнение набора операторов (команд) несколько раз. В этой конструкции нет никакого способа выйти из цикла автоматически. Для выхода используется оператор “EXIT” или “EXIT WHEN (условие)” внутри LOOP. Например:
DECLARE
cnt number;
BEGIN
cnt := 0;
LOOP
INSERT INTO test VALUES(2 * cnt);
cnt := cnt +1;
IF cnt >= 8 THEN
EXIT;
END IF;
END LOOP;
END;
/
7.6. Оператор цикла с параметром (цикл FOR)
В тех случаях, когда нужно повторить набор команд фиксированное число раз, используется конструкция FOR. Например:
DECLARE
cnt number;
BEGIN
cnt := 0;
FOR cnt IN 1 .. 8 LOOP
INSERT INTO test VALUES(2 * cnt);
END LOOP;
END;
/
7.7. Оператор цикла с предусловием (цикл WHILE)
В этой конструкции условие выхода из цикла проверяется при каждом проходе. Пример:
DECLARE
cnt number;
BEGIN
cnt := 0;
WHILE cnt < 8 LOOP
INSERT INTO test VALUES(2 * cnt);
cnt := cnt +1;
END LOOP;
END;
/
7.8. Оператор перехода GOTO
Операторы условных (IF-THEN и CASE) и циклических (LOOP, FOR и WHILE) вычислений (см. пп. 7.3–7.7) позволяют разрабатывать программы с нелинейной последовательностью выполнения команд. Используя эти операторы, мы можем перемещаться по программе, обходя группы команд или возвращаясь циклически к уже выполненным команда. Кроме этого PL/SQL предоставляет возможность совершать перемещения по программе с помощью оператора GOTO.
Использовать это оператор при программировании не рекомендуется, но в некоторых случаях GOTO является правильным решением.
Оператор GOTO имеет следующий синтаксис:
GOTO имя_метки;
Имя_метки – это идентификатор какого-либо места программы, который синтаксически оформляется следующим образом:
<<имя_метки>>
Двойные угловые скобки являются ограничителями метки, имена_меток играют роль указателей, доступных во время выполнения программы. В следующем примере показано, как GOTO используется для обхода участка программы.
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Начало блока’);
GOTO m_last;
DBMS_OUTPUT.PUT_LINE(‘Пропускаемый оператор’);
RETURN ;
<<m_last>>
DBMS_OUTPUT.PUT_LINE(‘Конец блока’);
END;
/
В этом примере используется функция вывода на экран – DBMS_OUTPUT.PUT_LINE (см. 10). В результате выполнения программы получим следующий вывод:
Начало блока
Конец блока
В PL/SQL следует соблюдать следующие правила использования оператора GOTO^
· GOTO не может ссылаться на метку, находящуюся во вложенном блоке;
· нельзя, находясь вне оператора IF, выполнить оператор GOTO, ведущий внутрь этого оператора;
· находясь внутри оператора IF, нельзя выполнить GOTO, ведущий к метке, находящейся внутри другого оператора IF;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.