Skip to content

系统引用游标

引用游标是一种对结果集的引用。

相比静态的普通游标在编译时定义,系统引用游标可以动态打开,并在运行时定义。

系统引用游标只能用于块语句、存储过程、存储函数中。

语法格式

  • 系统引用游标声明
    sql
    ColId SYS_REFCURSOR;
  • 系统引用游标打开
    sql
    OPEN ColId FOR SelectStmt;
  • 系统引用游标关闭
    sql
    CLOSE ColId;

参数说明

  • ColId:游标变量的名称。
  • SelectStmt:数据库查询语句,决定了系统引用游标所引用的结果集。

示例

假设表tab_test已存在并有4条数据。

sql
DECLARE
    i INT;
	v_chr VARCHAR;
    -- (1) 系统引用游标声明
    cur_sysref SYS_REFCURSOR;
BEGIN
    -- (2) 系统引用游标打开
	OPEN cur_sysref FOR SELECT c2 FROM tab_test;
	i := 1;
	LOOP
		FETCH cur_sysref INTO v_chr;
		EXIT WHEN cur_sysref%NOTFOUND;
		SEND_MSG('Row ' || i || ' is: ' || v_chr);
		i := i + 1;
	END LOOP;
    -- (3) 系统引用游标关闭
	CLOSE cur_sysref;
END;

-------------------
Row 1 is: a
Row 2 is: b
Row 3 is: c
Row 4 is: d