Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стат&Динам_SQL.doc
Скачиваний:
5
Добавлен:
18.11.2018
Размер:
165.89 Кб
Скачать

Динамические курсоры

В динамическом SQL можно использовать не только курсоры встроенного SQL (создаваемые статически оператором DECLARE CURSOR), но и два дополнительных типа курсоров:

  • объявляемые курсоры (declared cursors), создаваемые как DECLARE CURSOR;

  • размещаемые курсоры (allocated cursors), создаваемые как ALLOCATE CURSOR . Этот тип курсоров иногда называется выделенными курсорами.

Объявляемые и размещаемые курсоры могут иметь динамические параметры.

Для создания курсоров используются следующие операторы:

  • ALLOCATE CURSOR, в котором курсор указывается идентификатором переменной, описывающей SQL-оператор;

  • DECLARE CURSOR, в котором курсор указывается идентификатором откомпилированного SQL-оператора.

Например:

str1:='INSERT INTO tbl1 VALUES (1,10) ';

EXEC SQL ALLOCATE cur1 CURSOR FOR :str1;

EXEC SQL PREPARE stmt1 FROM :str1;

EXEC SQL DECLARE cur2 CURSOR FOR stmt1;

Открываются и закрываются динамические курсоры, как и статически создаваемые, операторами OPEN и CLOSE. Но при открытии курсора, имеющего динамические параметры, должна быть указана фраза USING.

Например:

str1:='SELECT f2 FROM tbl1 WHERE f1=? ';

EXEC SQL ALLOCATE cur1 CURSOR FOR :str1;

EXEC SQL OPEN cur1 USING :f2;

EXEC SQL FETCH cur1 INTO :f1;

Во фразе INTO оператора FETCH может быть указан как список INTO-переменных, так и SQL-дескриптор.