ВУЗ:
Составители:
Рубрика:
– 140 –
‐‐Увеличиватьпеременнуюresultна1дотехпор,
‐‐покаонанестанетравнаhigh_number.
WHILEresult!=high_numberLOOP
result:=result+1;
ENDLOOP;
RETURNresult;
END;
'LANGUAGE'plpgsql';
Цикл FOR
Возможно, циклы
FOR самая важная разновидность циклов, реализован-
ных в
PL/pgSQL. Цикл FOR выполняет программный блок для целых чисел из за-
данного интервала. У циклов
FOR в PL/pgSQL существуют аналоги в других про-
цедурных языках программирования.
Заголовок цикла
FOR начинается с объявления целочисленной переменной,
управляющей выполнением цикла. Затем указывается интервал принимаемых
ею значений, а далее следует блок команд. Управляющая переменная уничто-
жается сразу же после выхода из цикла, причем ее не нужно объявлять в секции
объявлений блока.
Синтаксис цикла
FOR:
[«метка»]
FORпеременнаяIN[REVERSE]выражение!..выражение?LOOP
команда;
[...]
ENDLOOP;
Цикл FOR выполняет одну итерацию для каждого значения переменной пе-
ременная в интервале, границы которого определяются выражениями
выраже‐
ние! и выражение? (включительно). В начале цикла переменная инициализиру-
ется значением выражения
выражение! и увеличивается на 1 после каждой ите-
рации. Если в заголовке цикла присутствует ключевое слово
REVERSE, то пере-
менная не увеличивается, а уменьшается.
ПРИМЕЧАНИЕ Управляющую переменную цикла не обязательно объявлять вне блока FOR, ес-
ли вы не собираетесь работать с ней после завершения цикла.
Циклы FOR также используются для перебора результатов запросов. Пример
приведен в листинге 6.38, где цикл
FOR работает с переменными RECORD и %ROW‐
TYPE
.
Синтаксис цикла
FOR с перебором записей:
[«метка»]
FOR{переменная_record%переменная_rowtуре}INсекция_selectLOOP
команда;
[...]
ENDLOOP;
В листинге 6.38 функция extract_all_titles() получает из базы данных
список всех названий книг, упорядоченных по теме. Если по какой-либо теме в
базе данных не находится ни одной книги, выводится пустая строка. Список
возвращается в виде текстовой переменной. Перебор тем по кодам в функции
extract_all_titles() осуществляется в цикле FOR.
Страницы
- « первая
- ‹ предыдущая
- …
- 138
- 139
- 140
- 141
- 142
- …
- следующая ›
- последняя »