Казахстан, Алматы, Международный Университет IT, 2013 |
Опубликован: 05.01.2004 | Уровень: специалист | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 10:
Динамический SQL
Динамические курсоры
В динамическом 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-дескриптор.