创建测试oracle包:
create or replace package pkg_test as![]()
type t_ref is ref cursor;
procedure p_test(cur_ref out t_ref);
![]()
end pkg_test;
/
![]()
create or replace package body pkg_test as
![]()
procedure p_test(cur_ref out t_ref) is
![]()
begin
open cur_ref for 'select * from test';
end p_test;
![]()
end pkg_test;
/
下面是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实现连接池的代码就知道了。
一路ok了。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5571篇文章)
- Oracle 10g基础应用 (4414篇文章)
- Java编程开发手册 (8196篇文章)
- Oracle初学者必知的100个问题 (33377次浏览)
- Oracle PL/SQL语言基础 (14253次浏览)
- Oracle架构的基础知识(入门级) (13523次浏览)
- Win 2003 Server重新安装Oracle9i (614次浏览)
- Oracle优化的五个方面 (613次浏览)
- 多个Oracle数据库创建一个Excel报表 (554次浏览)
- 怎么样快速复制表或者是插入数据 (527次浏览)
- 解决Oracle中Exp/Imp大量数据处理问题 (526次浏览)
- 重启系统的时候自动启动oracle服务 (396次浏览)
- 记几个容易忘的oracle 函数 (366次浏览)



