存储过程&函数返回结果集

来源:互联网 发布:squid与nginx 编辑:程序博客网 时间:2024/06/07 13:02
--创建测试表create table t01(id integer,name varchar2(10));--创建测试数据insert into t01(id,name) values (1,'a');insert into t01(id,name) values (2,'b');insert into t01(id,name) values (3,'c');--提交commit;--查询表的数据select * from t01;--创建返回结果集的存储过程(系统类型)create or replace procedure p_getdatas(v_cur out sys_refcursor)asbegin  open v_cur for select id,name from t01;end;--测试结果的正确性declare id t01.id%type;name t01.name%type;v_cur sys_refcursor;begin  p_getdatas(v_cur);  loop    fetch v_cur into id,name;    exit when v_cur%notfound;    dbms_output.put_line(name);  end loop;  close v_cur;end;--创建返回结果的函数(系统类型)create or replace function f_getdatasreturn sys_refcursoras  v_cur sys_refcursor;begin  open v_cur for select id,name from t01;  return v_cur;end;--测试结果的正确性select f_getdatas from dual;--定义包(用户自定义类型)create or replace package pk_getdatasas  type t_cur is ref cursor;  procedure p_result(v_cur out pk_getdatas.t_cur);  function f_result return pk_getdatas.t_cur;end;--创建包(用户自定义类型)create or replace package body pk_getdatasas  procedure p_result(v_cur out pk_getdatas.t_cur)    as    begin      open v_cur for select id,name from t01;    end;  function f_result    return pk_getdatas.t_cur    as      v_cur pk_getdatas.t_cur;    begin      open v_cur for select id,name from t01;      return v_cur;    end;end;--测试结果的正确性declare id t01.id%type;name t01.name%type;v_cur pk_getdatas.t_cur;begin  p_getdatas(v_cur);  loop    fetch v_cur into id,name;    exit when v_cur%notfound;    dbms_output.put_line(name);  end loop;  close v_cur;end;--测试结果的正确性select pk_getdatas.f_result from dual;


原创粉丝点击