站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题关于java调用Oracle存储过程返回结果集

关于java调用Oracle存储过程返回结果集

摘要: 关于java调用Oracle存储过程返回结果集


返回结果集本身不困难,网上很多相关例子,比如:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.100:1521:ccenter", "call", "call");

String sql = "{call proc_getcallback(?, ?, ?, ?)}";
CallableStatement csmt = tempConn.prepareCall(sql);
csmt.setString(1, start);
csmt.setString(2, end);
csmt.setInt(3, countyId);
csmt.registerOutParameter(4, OracleTypes.CURSOR);

csmt.execute();
rs = ((OracleCallableStatement)csmt).getCursor(4);
这种直接获取连接的方式下没有问题,但是如果connection是从连接池取出来的,那么在最后一句((OracleCallableStatement)csmt进行强制转换的时候会有异常(ClassCastException),但是如果要取结果集必须要这样转换(也可以强制转connection,也有同样的异常),应该如何处理这种方式下返回结果集的调用?


写错了一句,CallableStatement csmt = tempConn.prepareCall(sql);应该是
CallableStatement csmt = conn.prepareCall(sql);


连接池的数据源。。用thin方式,不要用oci方式
然后

rs = ((OracleCallableStatement)csmt).getCursor(4);

改为

ResultSet rs = (ResultSet)csmt.getObject(4);


OracleCallableStatement stmt = null;
stmt = (OracleCallableStatement) connection.prepareCall(sql);


↑返回目录
前一篇: 急!!!请问select下拉菜单在刷新后如何保持之前选择的选项?各位学长请指教 ,谢谢!!!
后一篇: 我按照书上的例子 写的,错误提示是这样的 为什么呢