Циклическая выборка
Назначение
Конструкция используется как альтернатива последовательности операторов 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; /* конец тела цикла */