Опубликован: 02.08.2007 | Уровень: специалист | Доступ: платный
Лекция 12:

Разработка серверного кода

Операторы управления выполнением программы PL/SQL

Операторы PL/SQL выполняются последовательно. Такая схема называется потоком команд. Изменить последовательный порядок выполнения команд можно с помощью команд управления потоком - оператором ветвления, оператором цикла и командой выхода из цикла.

Оператор IF условие TNEN группа операторов 1 ELSE группа операторов 2 позволяет проверить условие и в зависимости от результата проверки выполнить различные группы операторов. Если условие принимает значение TRUE, то выполняется группа операторов 1, в противном случае - группа операторов 2. Границы действия оператора IF определяются закрывающейся операторной скобкой END IF. Для расширения структуры ветвления предусмотрена операторная скобка ELSIF.

Синтаксис оператора ветвления следующий:

IF
Условие
THEN
	группа операторов 1
	ELSIF условие 1
	THEN
	Группа операторов 3
	ELSIF
…
ELSE 
группа операторов 2
END IF

Пример. Изменение потока команд

DECLARE
Pi CONSTANT real :=3.14;
x real :=1;
BEGIN
x:=Input_Data;
IF (x>0.5)
	THEN DBMS_OUTPUT.PUT_LINE ('y ='|| sin(Pi*x));
ELSIF (x< 0.4)
THEN DBMS_OUTPUT.PUT_LINE ('y ='|| cos(Pi*x));
ELSE
x:=x+1;
DBMS_OUTPUT.PUT_LINE ('y ='|| sin(Pi*x));
END IF;
END;
/

Переменная, имени которой предшествует знак &, вводится с терминала пользователя.

Организация цикла в программах на PL/SQL может быть выполнена несколькими способами. Рассмотрим примеры вычисления суммы.

Пример. Оператор LOOP.

DECLARE
X number;
I number;
Limit number:=1000;
BEGIN
I:=0;
X:=0;
LOOP
EXIT WHEN I > Limit;
I:=I+1;
X:=X+I*I;
END LOOP;
DBMS_OUTPUT.PUT_LINE (x);
END;
/

Оператор LOOP открывает цикл. Конструкция EXIT WHEN обеспечивает выход из цикла при выполнении условия, а закрывающая операторная скобка END LOOP завершает цикл.

Пример. Оператор WHILE

DECLARE
X number;
I number;
Limit number:=1000;
BEGIN
I:=0;
X:=0;
WHILE I <= Limit LOOP
I:=I+1;
X:=X+I*I;
END LOOP;
DBMS_OUTPUT.PUT_LINE (x);
END;
/

Управление потоком команд типа WHILE обеспечивает выполнение цикла до тех пор, пока условие является истинным.

Пример. Оператор FOR

DECLARE
X number;
Limit number:=1000;
BEGIN
I:=0;
X:=0;
FOR I IN 0..Limit LOOP
X:=X+I*I;
END LOOP;
DBMS_OUTPUT.PUT_LINE (x);
END;
/

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

Александра Каева
Александра Каева
Михаил Забелкин
Михаил Забелкин
Евгений Вершинин
Евгений Вершинин
Россия, Нижний Новгород, Нижегородский государственный технический университет, 2008
Aleksandr Arshinskyi
Aleksandr Arshinskyi
Россия