oracle 在一个存储过程中调用另一个返回游标的存储过程

来源:asp之家 时间:2009-09-26 18:54:00 

第一种情况是返回的游标是某个具体的表或视图的数据,如:

SQL-Code:

CREATE OR REPLACE PROCEDURE P_TESTA ( 
PRESULT OUT SYS_REFCURSOR 

AS 
BEGIN 
OPEN PRESULT FOR SELECT * FROM USERS; 
END P_TESTA; 

其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了:

SQL-Code:

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; 

第二种情况,我们返回的不是表的所有的列,或许只是其中一列或两列,如:

SQL-Code:

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这两个列,那么调用的时候也必须做相应的修改:

SQL-Code: 

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 返回的游标结构一致,否则就会出现错误。同理只要保持两个游标类型结构一致,就可以实现自由调用。

标签:存储过程,调用,oracle
0
投稿

猜你喜欢

  • sqlserver bcp(数据导入导出工具)一般用法与命令详解

    2012-07-11 15:56:39
  • asp 解析一个xml文件的公用函数集合

    2008-02-29 13:40:00
  • IE6下图片下方有空隙的解决方法

    2008-08-01 18:02:00
  • 6款jQuery图表插件[译]

    2009-06-01 10:34:00
  • 网页的栅格系统设计

    2008-09-19 21:13:00
  • sql server vs10安装之后一些列问题

    2012-01-05 19:22:41
  • 实例:ASP与ACCESS链接

    2008-11-21 16:10:00
  • ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)

    2012-06-06 20:11:21
  • 解析:怎样在MySQL中获得更好的搜索结果

    2008-11-27 15:19:00
  • SQL查询效率-100w数据查询只要1秒

    2008-08-20 18:25:00
  • VBScript WeekdayName 函数语法

    2008-01-25 19:25:00
  • XMLHTTP资料

    2008-09-05 17:20:00
  • 深入浅出SQL嵌套SELECT语句

    2009-02-06 14:25:00
  • asp Response.flush 实时显示进度

    2011-04-14 10:31:00
  • Mysql常用命令行大全

    2009-01-15 16:34:00
  • 在ASP中通过oo4o连接Oracle数据库的例子

    2008-10-12 12:55:00
  • 网页制作了解什么是CSS hack?

    2007-10-21 08:52:00
  • J2EE基础应用:J2EE中SQL语句自动构造方法

    2009-09-18 09:06:00
  • JavaScript正则表达式的简单应用:高亮显示

    2008-07-20 12:46:00
  • Yahoo!上的小秘密

    2007-08-23 09:48:00
  • asp之家 网络编程 m.aspxhome.com