Циклическая выборка
Назначение
Конструкция используется как альтернатива последовательности операторов OPEN-FETCH-CLOSE
.
Синтаксис
< циклическая выборка >::= EXEC SQL [AT < имя соединения >] REPEATED SELECT < предложение SQL >; EXEC SQL BEGIN; < операторы основного и встроенного языка > [EXEC SQL ENDSELECT;] < операторы основного и встроенного языка > EXEC SQL END;
Описание
-
< Имя соединения >
определяет соединение, по которому открывается курсор. Значение параметра может быть задано переменной типа «соединение» (DATABASE
) либо символьной константой. Соединение должно быть объявлено ранее. Если параметр< имя соединения >
опущен, курсор открывается для неименованного соединения. -
< Предложение SQL >
должно быть select-запросом, может иметь входные и выходные параметры (задаваемые с помощью конструкцииINTO < список переменных основного языка >
). -
EXEC SQL BEGIN
– начало тела циклической выборки. -
EXEC SQL ENDSELECT
– принудительный выход из тела цикла по некоторому условию. -
EXEC SQL END
– конец тела цикла.
Пример
exec sql repeated select distinct * into :dbArchiveID, :dbRequestID from AMCmd where ArchiveID = :dbArchiveID; exec sql begin; /* начало тела цикла */ RetStatus = AddToList(dbArchiveID, dbRequestID); /* некоторые действия с полученными данными * / if(RetStatus != STATUS_OK /* что-то не так */ exec sql endselect; /* принудительное завершение цикла */ exec sql end; /* конец тела цикла */