Oracle函数返回表类型(结果集)实例教程

发布时间:2020-03-14编辑:脚本学堂
本文介绍了Oracle函数返回表类型、返回结果集的方法,oracle函数表的实例教程,需要的朋友参考下。
Oracle函数返回表类型(结果集)实例教程 第二部分
二.其他实现
包里面用一个存储过程,返回游标,就可以了
>包的定义 (www.jb200.com 脚本学堂)
1) 包头
 

复制代码 代码示例:
create or replace package mypk   
as   
type t_cursor is ref cursor;   
procedure proc(name varchar2,c out t_cursor,a number);   
end; 
 

 
2) 包体
 

复制代码 代码示例:
create or replace package body mypk   
as   
procedure proc(name varchar2,c out t_cursor,a number)   
as    
begin   
open c for select * from test where id=a and name=name;   
end proc;   
end; 
 

 
这个方案的局限性太大,无法实现select * from function()的要求
调用:
 

复制代码 代码示例:
declare 
    cur_out_arg mypk.t_cursor; 
    rec_arg test%rowtype; 
begin 
    mypk.proc('abc',cur_out_arg,3); 
  --open cur_out_arg;          
    loop            
      --提取一行数据到rec_arg            
      fetch cur_out_arg into rec_arg;            
      --判读是否提取到值,没取到值就退出            
      --取到值cur_out_arg%notfound 是false             
      --取不到值cur_out_arg%notfound 是true            
      exit when cur_out_arg%notfound;             
      dbms_output.put_line(rec_arg.id||'-'||rec_arg.name);          
    end loop;        
  --关闭游标       
  close cur_out_arg; 
end;

以上通过实例介绍了Oracle函数返回表类型(结果集)的方法,希望对大家有所帮助。