Цикл 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: