如何在db2中创建静态游标?

时间:2009-09-22 11:33:02

标签: sql stored-procedures db2

我在DB2中创建静态游标时遇到了问题。这是我在SP中使用的声明。

DECLARE CURNAME SENSITIVE STATIC SCROLL CURSOR FOR 
        SELECT COL1, COL2 
        FROM SCH.TABLENA 
        ORDER BY COL1;

编译时说: DB2数据库错误:错误[42601] [IBM] [DB2 / NT] SQL0104N在“”后面发现了意外的令牌“SENSITIVE”。预期的代币可能包括:“FOR”。 LINE NUMBER = 20。 SQLSTATE = 42601

我使用的Db2版本是9.5。

请告诉我如何创建静态游标。

1 个答案:

答案 0 :(得分:2)

我假设你在SP中声明了光标。以下是相同的语法:

>>-DECLARE--cursor-name--CURSOR--+-----------+------------------>
                                 '-WITH HOLD-'

>--+----------------------------+--FOR--+-select-statement-+---><
   |              .-TO CALLER-. |       '-statement-name---'
   '-WITH RETURN--+-----------+-'
                  '-TO CLIENT-'

为什么指定了SENSITIVE STATIC SCROLL?有特定要求吗?

只有在CLI应用程序中声明游标时才可以指定SENSITIVE STATIC SCROLL,在这种情况下,声明在EXEC SQL stmt之前:

EXEC SQL DECLARE C2 SENSITIVE STATIC SCROLL CURSOR FOR
  SELECT DEPTNO, DEPTNAME, MGRNO
  FROM DSN8910.DEPT
  ORDER BY DEPTNO
END-EXEC