DECLARE 语句

DECLARE CURSOR 语句通过赋给游标一个名字并关联一个查询来定义一个游标。

语法如下:

EXEC SQL DECLARE 〈游标名〉

CURSOR FOR 〈查询语句〉;

例如:

EXEC SQL DECLARE cur CURSOR FOR
SELECT grade, city
FROM employee
WHERE empnum = :hnum ;

游标名是预编译器使用的标识符,它不是宿主变量,也不是一个程序变量,因而不需要在DECLARE 段中说明。游标名不能用连字符连接。它们的长度可以任意,但是只有前31个字符是有效的,也就是说,如果两个游标名的前31个字符都一样,那么即便第32个字符不一样,系统也认为这两个游标名指向同一个游标。为了与ANSI标准兼容,请不要使用多于18个字符的游标名。

另外,跟游标相关连的SELECT语句不应该带有INTO子句,INTO子句和输出主变量列表应该作为FETCH语句的一部分。

一个游标的DECLARE CURSOR语句必须在任何其他的SQL语句引用该游标之前声明。对于尚未声明游标的引用esql*C会给出相应的预处理错误,告知用户该游标名未声明。游标的作用域是整个esql*C程序。下面是一个错误使用游标的例子:

EXEC SQL OPEN cur_emp;
EXEC SQL DECLARE cur_emp CUSOR FOR
SELECT grade, city
FROM employee
WHERE empnum = :hnum ;

这个例子的错误之处在于:在声明游标之前就执行了打开游标的操作。正确的方法是把OPEN和DECLARE语句换一下位置。

注解

全部游标语句(DECLARE,OPEN,FETCH,CLOSE)必须放在同一个神通数据库连接中。

在同一个数据库连接中,不能说明两个或两个以上的同名游标。

游标名不能使用SQL关键字和保留字。