Цикл WHILE
Цикл WHILE выполняет блок команд до тех пор, пока заданное условие не станет ложным. При каждой итерации цикла WHILE условие проверяется перед выполнением первой команды блока, и если условие равно TRUE - блок выполняется. Таким образом, если условие никогда не становится равным FALSE, блок выполняется в бесконечном цикле вплоть до принудительного завершения клиентского процесса. Синтаксис цикла WHILE:
[ «метка» ]
WHILE условие LOOP
команда;
[...]
END LOOP;
В листинге 6.37 циклы WHILE продемонстрированы на примере функции add_two_loop(). Функция увеличивает число на 1 до тех пор, пока не будет достигнуто некоторое пороговое значение. Начальное и конечное значения передаются функции в виде аргументов. Обозначение !=, встречающееся в листинге 6.37, является оператором неравенства. В данном примере условие означает следующее: цикл WHILE продолжает выполняться, пока переменная result не равна переменной high_number. Иначе говоря, цикл WHILE завершается в тот момент, когда переменная result становится равной high_number.
Листинг 6.37. Использование цикла WHILE
CREATE OR REPLACE FUNCTION books.add_two_loop(integer, integer)
RETURNS integer AS
$BODY$
DECLARE
-- Объявление псевдонимов для аргументов.
low_number ALIAS FOR $1;
high_number ALIAS FOR $2;
-- Объявление переменной для хранения результата.
result integer := 0;
BEGIN
-- Увеличивать переменную result на 1 до тех пор,
-- пока она не станет равна high_number.
WHILE result != high_number LOOP
result := result + 1;
END LOOP;
RETURN result;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
Дата добавления: 2015-02-03; просмотров: 730;