ВУЗ:
Составители:
Рубрика:
– 139 –
‐‐Объявлениецелочисленнойпеременнойдляхранениярезульта‐
та,
resultinteger;
BEGIN
‐‐Исходноечислоприсваиваетсяпеременной
result,result:=numl;
LOOP
result:=result*result;
EXITWHENresult>=10000;
ENDLOOP;
RETURNresult;
END;
'LANGUAGE'plpgsql';
В листинге 6.36 показан результат вызова square_integer_loop() с аргу-
ментом
3.
Листинг 6.36. Результат вызова функции square_integer_loop()
booktown=#SELECTsquare_integer_loop(3);
square_integer_loop
6561
(1row)
Цикл WHILE
Цикл
WHILE выполняет блок команд до тех пор, пока заданное условие не
станет ложным. При каждой итерации цикла
WHILE условие проверяется перед
выполнением первой команды блока, и если условие равно
TRUE блок выпол-
няется. Таким образом, если условие никогда не становится равным
FALSE, блок
выполняется в бесконечном цикле вплоть до принудительного завершения кли-
ентского процесса. Синтаксис цикла
WHILE:
[«метка»]
WHILEусловиеLOOP
команда;
[...]
ENDLOOP;
В листинге 6.37 циклы WHILE продемонстрированы на примере функции
add_two_loop(). Функция увеличивает число на 1 до тех пор, пока не будет дос-
тигнуто некоторое пороговое значение. Начальное и конечное значения пере-
даются функции в виде аргументов. Обозначение
!=, встречающееся в листинге
6.37, является оператором неравенства. В данном примере условие означает
следующее: цикл
WHILE продолжает выполняться, пока переменная result не
равна переменной
high_number. Иначе говоря, цикл WHILE завершается в тот
момент, когда переменная
result становится равной high_number.
Листинг 6.37. Использование цикла WHILE
CREATEFUNCTIONadd_two_loop(integer,integer)RETURNSintegerAS'
DECLARE
‐‐Объявлениепсевдонимовдляаргументов.
low_numberALIASFOR$1;
high_numberALIASFOR$2;
‐‐Объявлениепеременнойдляхранениярезультата,
resultinteger=0;
BEGIN
Страницы
- « первая
- ‹ предыдущая
- …
- 137
- 138
- 139
- 140
- 141
- …
- следующая ›
- последняя »
