一、概念
• REF游标和游标变量用于处理运行时动态执行的SQL查询的结果集。
• 创建游标变量有两个步骤:
• 声明REF游标类型
• 声明REF游标类型的游标变量
• 声明REF游标的语法:
type 游标类型名 is ref cursor [return 返回值类型]
二、区别
• 静态游标和REF游标的区别:
• 静态游标是静态定义,REF游标是动态关联。
• 使用REF游标需REF游标变量。
• REF游标能作为参数进行传递,而静态游标是不能的。
三、优势
• 游标变量与游标相比较:
• 游标只能处理静态的查询语言
• 游标变量可以处理动态查询语句的结果集
四、实例
declare --强类型的游标类型 type strong_cursor_type is ref cursor return emp%rowtype; --弱类型的游标类型 type weak_cursor_type is ref cursor; --变量定义 strong_cursor strong_cursor_type; weak_cursor weak_cursor_type; v_emp emp%rowtype; begin open strong_cursor for select * from emp; loop fetch strong_cursor into v_emp; exit when strong_cursor%notfound; dbms_output.put_line(v_emp.empno || '-' || v_emp.ename); end loop; close strong_cursor; open weak_cursor for '&sql'; loop fetch weak_cursor into v_emp; exit when weak_cursor%notfound; dbms_output.put_line(v_emp.empno || '-' || v_emp.ename); end loop; close weak_cursor; end;