Oracle存储过程返回记录集

日期: 2008-06-17 来源:TechTarget中国

  oracle的存储过程返回记录集,关键之处是要用游标。
  
  关于数据库的游标(cursor)大家肯定都接触不少,我们可以通过OPEN,FETCH,CLOSE操作控制游标进行各种方便的操作,这方面的例子我就不在重复了。我们现在要介绍的是游标变量(cursor variable)。类似游标,游标变量也是指向一个查询结果集的当前行。不同的是,游标变量能为任何类型相似(type-compatible)的查询打开,而并不是绑定到某一个特定的查询。通过游标变量,你可以在数据库的数据提取中获得更多的方便。


  首先是建立表。


  create TABLE LIHUAN.BILL_POINTS


  (


       POINTS_ID                      NUMBER(10,0) NOT NULL,


       CUSTOMER_ID                    NUMBER(10,0) NOT NULL,


       BILL_POINT_NO                  NUMBER(2,0) DEFAULT 1 NOT NULL,


       CONSTRAINT PK_BILL_POINTS PRIMARY KEY (POINTS_ID)


  )


  /


  其次,建PACKAGE。 


  create OR REPLACE PACKAGE LIHUAN.YY_PKG_BILL_POINT_NO/*取得用户的所有计费电序号*/


  IS


  TYPE T_CURSOR IS REF CURSOR;


  PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE,


   Re_CURSOR OUT T_CURSOR);


  END;


  /   


  再次,建PACKAGE BODY。


  create OR REPLACE PACKAGE BODY LIHUAN.YY_PKG_BILL_POINT_NO/*取得用户的所有计费电序号*/


  IS


    PROCEDURE BILL_POINT_NO(P_CUSTOMER_ID BILL_POINTS.CUSTOMER_ID%TYPE,


      Re_CURSOR OUT T_CURSOR)


      IS


      V_CURSOR T_CURSOR; 


      BEGIN


         OPEN V_CURSOR FOR 


               select Bill_Point_No from BILL_POINTS where CUSTOMER_ID =P_CUSTOMER_ID;


              Re_CURSOR := V_CURSOR;


      END;


  END;


  /


 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐