Основы языка PL/SQL Управляющие конструкции Границы моего языка означают границы моего мира. Людвиг Виттгенштейн
Условное управление: предложения IF Форма 1: IF THEN ; [ ELSE ; ] END IF; Форма 2: IF THEN ; ELSIF THEN ;... [ ELSE ; ] END IF; Пример: IF sales > THEN bonus := 1500; ELSIF sales > THEN bonus := 500; ELSE bonus := 100; END IF;
Циклы Цикл LOOP – EXIT – END LOOP (цикл с постусловием) : LOOP IF THEN EXIT; -- немедленно выходит из цикла END IF;... END LOOP; Цикл LOOP – EXIT – END LOOP (цикл с предусловием): LOOP EXIT WHEN ; -- выйти из цикла при условии... END LOOP; Метки цикла: > LOOP... END LOOP my_loop;
Циклы Цикл WHILE – LOOP – END LOOP (цикл с предусловием): WHILE LOOP ; END LOOP; Цикл FOR – LOOP – END LOOP (цикл со счетчиком): FOR IN [REVERSE] нижняя_граница..верхняя_граница LOOP END LOOP; – целочисленная переменная, может не объявляться в части DECARE., – переменные или константы. Пример: FOR i IN REVERSE 1..3 LOOP -- присваивает i 3, 2, 1 ; -- будет выполнен три раза END LOOP;
Использование предложения EXIT Предложение EXIT позволяет завершить цикл FOR прежде времени. FOR j IN LOOP... EXIT WHEN ;... END LOOP; > FOR i IN 1..5 LOOP... FOR j IN LOOP... EXIT outer WHEN ; -- выход из обоих циклов... END LOOP; END LOOP outer; -- управление будет передано сюда
Предложения GOTO и NULL BEGIN... GOTO insert_row;... > INSERT INTO emp VALUES END; DECLARE done BOOLEAN; BEGIN... FOR i IN LOOP IF done THEN GOTO end_loop; END IF;... > null; END LOOP; -- это не выполняемое предложение END;
Ограничения на использование GOTO Предложение GOTO не может передавать управление: в предложение IF, в предложение LOOP, в подблок, из подпрограммы в окружающий блок, из обработчика исключений в текущий блок.