
Oracle ref cursor和sys_refcursor
发布日期:2021-05-09 04:16:01
浏览次数:21
分类:精选文章
本文共 4114 字,大约阅读时间需要 13 分钟。
1. 自定义 ref cursor 和 sys_refcursor;
2. sys_refcursor 做为参数传递结果集; 3. ref cursor 做为参数传递结果集;
1. 自定义 ref cursor 和 sys_refcursor:
type df_ref ref ; --定义 ref cursor
rf df_ref; --声明 rf 是df_ref
ename 2(30);
rf 'select ename from emp';
loop
rf ename;
dbms_output.put_line(ename);
rf%notfound;
loop;
rf;
;
/
sys_refcursor 不需要声明可以直接使用:
reft sys_refcursor;
reft 'select * from emp';
reft;
;
sqlplus 中可以使用refcursor:
OPS$SYWU@sydb%11GR2>variable r refcursor;
OPS$SYWU@sydb%11GR2> :r 'select * from emp';
PL/ successfully completed.
Elapsed: 00:00:00.00
OPS$SYWU@sydb%11GR2> :r;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17--80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03--81 950 30
7902 FORD ANALYST 7566 03--81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 selected.
2. sys_refcursor 做为参数传递结果集:
replace pro_getEmp(ref_rs out sys_refcursor)
ref_rs 'select ename,empno from emp';
---不能在这里关闭
;
/
调用结果集:
refc sys_refcursor;
ename 2(30);
empno number;
pro_getEmp(ref_rs=>refc);
loop
refc ename,empno;
dbms_output.put_line(ename||''||empno);
refc%notfound;
loop;
;
/
3. ref cursor 做为参数传递结果集:
在包头定义 ref cursor:replace package pk_cur
type df_cursor ref ;
fun_emp df_cursor;
;
/
replace package body pk_cur
fun_emp df_cursor
fn_cursor df_cursor;
fn_cursor 'select * from emp';
fn_cursor;
;
;
/
OPS$SYWU@sydb%11GR2> pk_cur.fun_emp dual;
FUN_EMP
--------------------
STATEMENT : 1
STATEMENT : 1
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17--80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03--81 950 30
7902 FORD ANALYST 7566 03--81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14 selected.
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月23日 14时55分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mpvue的使用(一)必要的开发环境
2025-04-14
mpvue的使用(三)封装axios
2025-04-14
mpvue的使用(二)使用vant-weapp
2025-04-14
MQ 重复消费如何解决?
2025-04-14
MQC功能测试大揭秘(4)- MQC 功能测试 DEMO
2025-04-14
mqtt broker服务端
2025-04-14
mqtt haproxy 代理及负载搭建
2025-04-14
MQTT v5共享订阅是怎么回事?如何使用共享订阅提高消息订阅的灵活性和可伸缩性?
2025-04-14
MQTT vs HTTP:谁更适合物联网?
2025-04-14
MQTT 保持活动计时器:让您的设备保持连接
2025-04-14
MQTT 保留消息
2025-04-14
MQTT 和 EMQX到底有啥区别?
2025-04-14
MQTT 在工控上位机中的应用
2025-04-14
MQTT 持久会话与 Clean Session 详解
2025-04-14
MQTT 通信协议详解与应用场景全解析
2025-04-14
MQTT介绍及与其他协议的比较
2025-04-14
MQTT共享订阅:实现高效的消息通信
2025-04-14
MQTT协议 - 安全问题
2025-04-14