Доступные версии документации

Циклическая выборка

Назначение

Конструкция используется как альтернатива последовательности операторов OPEN-FETCH-CLOSE.

Синтаксис
 
<циклическая выборка>::=
EXEC SQL [AT <имя соединения>] REPEATED SELECT <предложение SQL>;
EXEC SQL BEGIN;
<операторы основного и встроенного языка>
[EXEC SQL ENDSELECT;]
<операторы основного и встроенного языка>
EXEC SQL END;
Описание
  1. <Имя соединения> определяет соединение, по которому открывается курсор. Значение параметра может быть задано переменной типа «соединение» (DATABASE) либо символьной константой. Соединение должно быть объявлено ранее. Если параметр <имя соединения> опущен, курсор открывается для неименованного соединения.

  2. <Предложение SQL> должно быть select-запросом, может иметь входные и выходные параметры (задаваемые с помощью конструкции INTO <список переменных основного языка>).

  3. EXEC SQL BEGIN – начало тела циклической выборки.

  4. EXEC SQL ENDSELECT – принудительный выход из тела цикла по некоторому условию.

  5. 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; /* конец тела цикла */
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter