Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML. Токмаков Г.П. - 139 стр.

UptoLike

Составители: 

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