OraclePackage中返回游标的写法和调用

文章作者 100test 发表时间 2008:04:19 13:05:08
来源 100Test.Com百考试题网


  在Oracle Package中返回游标的写法和调用:

  具体示例如下:

create or replace package FirstPage is



  -- Author  : MECON

  -- Created : 2006-7-20 上午 09:34:44

  -- Purpose : 用来处理首页各个模块的显示情况

  

  -- Public type declarations

  type outlist is REF CURSOR.

  

  

  --高中

  Procedure getSeniorHighSchool(

       maxrow in number,

       minrow in number,

       return_list out outlist

  ).



//可以定义其他



end FirstPage.

  以上是packages的定义。

  下面是package body的定义:

create or replace package body FirstPage is



 --高中

  Procedure getSeniorHighSchool(

       maxrow in number,

       minrow in number,

       return_list out outlist

  )as

  

  begin

  

     open return_list 

     

        for

        

          0select * from (0select a.*,rownum rnum from (

          

            //业务语句

          ) a where rownum<=maxrow) where rnum >=minrow.

    

  end.



//抒写其他过程



end FirstPage.

  Oracle Package的基本就这写了。其余的看业务的需求了。

  以下是jdbc代码的调用。

  当然如果采用jdbc直接获得Connection下面的代码是没问题的。

oracle.jdbc.OracleCallableStatement cs = null.

    String sqlStr = "{call firstpage.getSeniorHighSchool(?,?,?)}".

    ResultSet rs = null.

    try{

      cs = (oracle.jdbc.OracleCallableStatement)conn.prepareCall(sqlStr).

      cs.setLong(1,arg[0]).

      cs.setLong(2,arg[1]).



      cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR).

      cs.execute().

      rs = cs.getCursor(3).



      while(rs.next()){

               //...........

      }

      rs.close().

      cs.close().

    }catch(Exception e){

      System.out.println("produce error ").

      e.printStackTrace().

    }

  注意:如果采用连接池(例如:采用Weblogic或jboss等web服务器自带的连接池),这段代码就会抛出CastClassException.

  下面是另一种标准的写法。

CallableStatement cs = null.

cs = conn.prepareCall(sql).

cs.setInt(1,maxrow).

cs.setInt(2,minrow).

cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR).

cs.execute().

rs = (ResultSet)cs.getObject(3).

  你可以发现,差别是很简单的,你只需看一下weblogic和jboss实现连接池的代码就会理解的更加清楚。



相关文章


老化的数据仓库-新技术应用的瓶颈
Oracle10gR2中调整usercommit
Oracle数据库中的临时表用法
使用索引跳跃式扫描以提高查询速度
OraclePackage中返回游标的写法和调用
初学j2me必读网友学习笔记
详细解答中小企业安全路由器配置及管理
网管必修:校园网常见路由器维护方法
安全策略-IE浏览器防黑十大秘籍
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛