当前位置:首页 > 网络编程 > 数据库 > Oracle > Oracle Package返回游标和Java调用

Oracle Package返回游标和Java调用

点击次数:35 次 发布日期:2008-11-22 17:17:28 作者:源代码网
源代码网推荐 建测试oracle包:

Ruby on Rails之Oracle应用(1)
 
create or replace package pkg_test as Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用type t_ref is ref cursor; Oracle Package返回游标和Java调用procedure p_test(cur_ref out t_ref); Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用end pkg_test; Oracle Package返回游标和Java调用/ Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用create or replace package body pkg_test as Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用procedure p_test(cur_ref out t_ref) is Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用begin Oracle Package返回游标和Java调用open cur_ref for "select * from test"; Oracle Package返回游标和Java调用end p_test; Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用end pkg_test; Oracle Package返回游标和Java调用/

  
  下面是jdbc代码的调用。

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

Oracle Package返回游标和Java调用oracle.jdbc.OracleCallableStatement cs = null; Oracle Package返回游标和Java调用String sqlStr = "{call firstpage.getSeniorHighSchool(?,?,?)}"; Oracle Package返回游标和Java调用ResultSet rs = null; Oracle Package返回游标和Java调用try{ Oracle Package返回游标和Java调用cs = (oracle.jdbc.OracleCallableStatement)conn.prepareCall(sqlStr); Oracle Package返回游标和Java调用cs.setLong(1,arg[0]); Oracle Package返回游标和Java调用cs.setLong(2,arg[1]); Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR); Oracle Package返回游标和Java调用cs.execute(); Oracle Package返回游标和Java调用rs = cs.getCursor(3); Oracle Package返回游标和Java调用 Oracle Package返回游标和Java调用while(rs.next()){ Oracle Package返回游标和Java调用//........... Oracle Package返回游标和Java调用} Oracle Package返回游标和Java调用rs.close(); Oracle Package返回游标和Java调用cs.close(); Oracle Package返回游标和Java调用}catch(Exception e){ Oracle Package返回游标和Java调用System.out.println("produce error "); Oracle Package返回游标和Java调用e.printStackTrace(); Oracle Package返回游标和Java调用}

  但是,如果采用连接池(比如:采用Weblogic或jboss等web服务器自带的连接池) 哈哈,这段代码就会让你头疼了。不信你试试。抛出CastClassException哈哈。

  下面是另一种写法,保你没事。这种写法风水好。哈哈

Oracle Package返回游标和Java调用CallableStatement cs = null; Oracle Package返回游标和Java调用cs = conn.prepareCall(sql); Oracle Package返回游标和Java调用cs.setInt(1,maxrow); Oracle Package返回游标和Java调用cs.setInt(2,minrow); Oracle Package返回游标和Java调用cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR); Oracle Package返回游标和Java调用cs.execute(); Oracle Package返回游标和Java调用rs = (ResultSet)cs.getObject(3);

  差别很简单。

  可以看看weblogic和jboss实现连接池的代码就知道了。

  一路ok了。

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华