服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

如何使用ref cursor处理oracle的结果集

【赛迪网-it技术报道】在实际的工作和学习中,我们可以通过oracle数据库提供的ref cursor功能实现在程序间传递结果集的功能,另外,利用ref cursor可以同时实现bulk sql,以此提高sql的性能。

首先,我们需要使用scott用户的emp表实现以下测试:

sql> desc emp
name null? type
-------------------- -------- ------------
empno not null number(4)
ename varchar2(10)
job varchar2(9)
mgr number(4)
hiredate date
sal number(7,2)
comm number(7,2)
deptno number(2)

最后使用ref cursor获得结果集输出:

sql> set serveroutput on
sql> declare
2 type mytable is table of emp%rowtype;
3 l_data mytable;
4 l_refc sys_refcursor;
5 begin
6 open l_refc for
7 select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp;
8 
9 fetch l_refc bulk collect into l_data;
10 
11 close l_refc;
12 
13 for i in 1 .. l_data.count
14 loop
15 dbms_output.put_line ( l_data (i).ename
16 || ' was hired since '
17 || l_data (i).hiredate
18 );
19 end loop;
20 end;
21 /
smith was hired since 17-dec-80
allen was hired since 20-feb-81
ward was hired since 22-feb-81
jones was hired since 02-apr-81
martin was hired since 28-sep-81
blake was hired since 01-may-81
clark was hired since 09-jun-81
scott was hired since 19-apr-87
king was hired since 17-nov-81
turner was hired since 08-sep-81
adams was hired since 23-may-87
james was hired since 03-dec-81
ford was hired since 03-dec-81
miller was hired since 23-jan-82

pl/sql procedure successfully completed.

扫描关注微信公众号