Московский государственный университет имени М.В.Ломоносова
Опубликован: 05.01.2004 | Доступ: свободный | Студентов: 9486 / 1254 | Оценка: 4.04 / 3.84 | Длительность: 10:03:00
ISBN: 978-5-94774-539-9
Лекция 10:

Динамический SQL

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

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

В динамическом 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-дескриптор.

< Лекция 9 || Лекция 10: 123 || Лекция 11 >