Oracle数据库之sys_refcursor样例

1 建表

drop table  USER_INFO;

CREATE  TABLE USER_INFO
 (
    User_ID integer primary key,--Primary key
    User_Name varchar2(20),
    sex varchar2(2)
 );
 insert into user_info(User_ID,user_name,sex) values(1,'David.Tian','M');
 insert into user_info(User_ID,user_name,sex) values(2,'Lucy','F'); 
 commit;
 
 select * from user_info;

2 创建存储过程
其参数类型为SYS_REFCURSOR

create or replace procedure getResult(p_cursor out sys_refcursor)
as
begin
  open p_cursor for
  select * from user_info;
end;
/

3 使用存储过程中的参考游标

declare
  v_cursor sys_refcursor;
  u user_info%rowtype;
begin
  getResult(v_cursor);
  loop 
  fetch v_cursor into u.user_id, u.user_name,u.sex;          
  exit when v_cursor%notfound;
  dbms_output.put_line(u.user_id||'-'||u.user_name||'-'||u.sex);
  end loop;
end;
/

你可能感兴趣的:(oracle,数据库,oracle)