游标提供了许多检查其当前状态的方法。对于绑定到变量 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