oracle在存储过程里面调用其它的存储过程(包含游标)
来源:互联网 发布:电子数据司法鉴定资质 编辑:程序博客网 时间:2024/06/06 09:07
第一种情况是返回的游标是某个具体的表或视图的数据,如
CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;
其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了:
CREATE OR REPLACE PROCEDURE P_TESTB AS VARCURSOR SYS_REFCURSOR; R USERS%ROWTYPE; BEGIN P_TESTA(VARCURSOR); LOOP FETCH VARCURSOR INTO R; EXIT WHEN VARCURSOR%NOTFOUND; DBMS_OUTPUT.PUT_LINE(R.NAME); END LOOP; END P_TESTB;
第二种情况,我们返回的不是表的所有的列,或许只是其中一列或两列,如:
CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT ID,NAME FROM USERS; END P_TESTA;
这里我们只返回了USERS表的ID,NAME这两个列,那么调用的时候也必须做相应的修改:
CREATE OR REPLACE PROCEDURE P_TESTB AS VARCURSOR SYS_REFCURSOR; CURSOR TMPCURSOR IS SELECT ID,NAME FROM USERS WHERE ROWNUM=1; R TMPCURSOR%ROWTYPE; BEGIN P_TESTA(VARCURSOR); LOOP FETCH VARCURSOR INTO R; EXIT WHEN VARCURSOR%NOTFOUND; DBMS_OUTPUT.PUT_LINE(R.ID); END LOOP; END P_TESTB;
与之前不同的是我们声明了一个游标类型的变量TMPCURSOR ,注意TMPCURSOR 的结构必须与存储过程P_TESTA 返回的游标结构一致,否则就会出现错误。同理只要保持两个游标类型结构一致,就可以实现自由调用。
原文链接:http://www.jb51.net/article/20160.htm
阅读全文
0 0
- oracle在存储过程里面调用其它的存储过程(包含游标)
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- ORACLE 11G在存储过程里面遍历游标, 调用job任务定时执行
- 在存储过程里面使用游标
- oracle存储过程,游标
- oracle 存储过程 游标
- oracle存储过程--游标
- oracle 存储过程 游标
- oracle 存储过程 游标
- oracle存储过程游标
- oracle存储过程-游标
- Oracle使用游标循环调用存储过程
- oracle存储过程调用游标例子
- vb调用oracle数据库返回游标的存储过程
- jdbc中调用oracle 返回游标类型的存储过程
- jdbc中调用oracle 返回游标类型的存储过程
- Java反射总结
- 虚拟继承
- ASP.NET MVC Model 验证总结
- Django入门-5:模型的基本使用2-字段
- 【模板】最小生成树Prim 4heap
- oracle在存储过程里面调用其它的存储过程(包含游标)
- html中实现我的第一个网页
- css-day7-个人学习笔记
- 人脸特征点检测(一):深度卷积网络级联
- luogu P3601 签到题
- 将博客搬至CSDN
- 关于Android Studio的安装教程详解
- Git 工作流
- 4-4 Shift Down如何从堆中取出一个元素(对应优先队列中出队这个操作)