PL/SQL–引用游标的使用
使用引用游标的情景:
1.你可能有这样的需求:让一个函数返回一个游标,然后宿主函数调用并使用这个游标
2.open cursor_name for v_sql_statement ;当时用动态sql进行多行查询时,因为此处的cursour_name必须是一个游标变量,所以需要使用。h还可查看例子
create or replace package demo_pkg is
--声明引用游标
type ref_cursor is ref cursor;
function get_ref return ref_cursor;
procedure process_data;
end demo_pkg ;
--创建包体
create or replace package body demo_pkg is
function get_ref return ref_cursor is
v_cursor ref_cursor;
v_sql_statement varchar2(2000);
begin
v_sql_statement := '
select stu.student_name
from STUDENT stu';
open v_cursor for v_sql_statement;
return v_cursor;
end;
procedure process_data is
v_cursor ref_cursor;
v_name varchar2(10);
begin
v_cursor := get_ref();
loop
fetch v_cursor into v_name;
exit when v_cursor%notfound;
dbms_output.put_line(v_name );
end loop;
end;
end demo_pkg;