您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

游标的属性

游标提供了许多检查其当前状态的方法。对于绑定到变量 c_cursor1 的游标,可以使用下表中汇总的属性。

游标属性属性描述c_cursor1::ISCLOSED如果游标 c_cursor1 关闭,则为 true,否则为 false。c_cursor1::NOTFOUND如果上一读取操作未返回有效行,则为 true,否则为 false。在游标上调用 OPEN 之前或调用 CLOSE 后,将始终返回 true。c_cursor1::ROWCOUNT返回游标到目前为止读取的行数。此值在第一个 FETCH 操作之后可用。在第一个获取操作之前,该数字为 0。 

示例:

以下示例显示了一个完整过程,该过程使用游标 c_cursor1 的属性检查是否可以获取一组结果。

CREATE PROCEDURE cursor_proc LANGUAGE SQLSCRIPT AS

BEGIN

DECLARE v_isbn VARCHAR(20);

DECLARE v_title VARCHAR(20);

DECLARE v_price DOUBLE;

DECLARE v_crcy VARCHAR(20);

DECLARE CURSOR c_cursor1 (v_isbn VARCHAR(20)) FOR

SELECT isbn, title, price, crcy FROM books

WHERE isbn = :v_isbn ORDER BY isbn;

OPEN c_cursor1('978-3-86894-012-1');

IF c_cursor1::ISCLOSED THEN

CALL ins_msg_proc('WRONG: cursor not open');

ELSE

CALL ins_msg_proc('OK: cursor open');

END IF;

FETCH c_cursor1 INTO v_isbn, v_title, v_price, v_crcy;

IF c_cursor1::NOTFOUND THEN

CALL ins_msg_proc('WRONG: cursor contains no valid data');

ELSE

CALL ins_msg_proc('OK: cursor contains valid data');

END IF;

CLOSE c_cursor1;

END