[本站首页] [管理页面] [写新日志] [退出]

朝为田舍郎,暮登天子堂,将相本无种,男儿当自强。
首页(178) Hibernate(10) JAVA(19) Web(15) Struts(7) 口水(9) Ides(18) 其它(51) AJAX(6) database(29) 
Blog信息

blog名称:四裤全输的小窝~~
日志总数:178
评论数量:699
留言数量:198
访问次数:1156777
建立时间:2005年10月29日

Blog内搜索



日志更新

谷歌地图定位偏移解决方法
【转】利用Windows内置的命令作端口
WIN2003服务器安全加固方案
[转]sql server 日期比较、日
MediaCoder 一般参数设置
[转]VMware中创建共享磁盘阵列的方
缓解vss共享文件夹的安全隐患问题(转)
Delphi 中调用JavaScript
微软的官方方法:延长Windows Se
cxGrid 过滤 排序后 取选中记录的

最新评论

回复:谷歌地图定位偏移解决方法
回复:谷歌地图定位偏移解决方法
回复:WIN2003服务器安全加固方案
回复:cxGrid 过滤 排序后 取选中
回复:TreeView 父节点 子节点 
回复:[转]Oracle Instead
回复:DWR 官方下载地址
ugg  boots
回复:cxGrid 过滤 排序后 取选中
回复:DWR 官方下载地址

友情链接

biglin's Blog
NoisyRam's Blog
Stone's Blog
Kevin 的小家
『知』治通鉴

留言板




[JAVA][J2ME]Java JDBC里如何取得Oracle存储过程返回的动态结果集
文章收藏,  网上资源,  软件技术,  电脑与网络 四裤全输 发表于 2006/4/15 15:09:16

[J2ME]Java JDBC里如何取得Oracle存储过程返回的动态结果集   作者:叶枫 版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:叶枫(http://blog.matrix.org.cn/page/叶枫)原文:[http://www.matrix.org.cn/resource/article/43/43999_JDBC_Oracle.html]http://www.matrix.org.cn/resource/article/43/43999_JDBC_Oracle.html[/url]关键字:JDBC Oracle Cursor1. 关于oracle和结果集其实在大多数情况下,我们并不需要从oracle存储过程里返回一个或多个结果集,除非迫不得已。如果大家用过MS SQL Server或Sybase SQL Server,那么从存储过程返回一个动态的结果集是一件非常容易的事情,只要在存储过程结束时写上“select column1,column2,.... from table_list where condition“就可以了。但在Oracle中不能这样做. 我们必须使用Oracle Cursor.在Oracle PL/SQL中,Cursor用来返回一行或多行记录,借助Cursor,我们可以从结果集中取得所有记录.Cursor并不难,但是要从Oracle存储过程中返回结果集, 就需要用到Cursor变量,Cursor变量Oracle PL/SQL的类型是REF CURSOR, 我们只要定义了REF CURSOR 类型就可以使用Cursor变量. 比如我们可以这样定义:TYPE ref_cursor IS REF CURSOR;了解了Cursor以及Cursor变量,下面就介绍如何使用Cursor变量给JDBC返回结果集.2. 定义表结构在以下例子里,我们要用到一张表Hotline.Create table hotline(country varchar2(50),pno varchar2(50)); 3. 定义存储过程create or replace package PKG_HOTLINE istype HotlineCursorType is REF CURSOR;function getHotline return HotlineCursorType;end;create or replace package body PKG_HOTLINE isfunction getHotline return HotlineCursorType ishotlineCursor HotlineCursorType;beginopen hotlineCursor for select * from hotline;return hotlineCursor;end;end; 在这个存储过程里,我们定义了HotlineCursorType 类型,并且在存储过程中简单地查找所有的记录并返回HotlineCursorType.4. 测试存储过程在Oracle SQL/Plus里登陆到数据库. 按以下输入就看到返回的结果集.SQL> var rs refcursor;SQL> exec :rs := PKG_HOTLINE.getHotline;SQL> print rs; 5. Java调用简单地写一个Java Class.....public void openCursor(){Connection conn = null;ResultSet rs = null;CallableStatement stmt = null;String sql = “{? = call PKG_HOTLINE.getHotline()}“;try{conn = getConnection();stmt = conn.prepareCall(sql);stmt.registerOutParameter(1,OracleTypes.CURSOR);stmt.execute();rs = ((OracleCallableStatement)stmt).getCursor(1);while(rs.next()){String country = rs.getString(1);String pno = rs.getString(2);System.out.println(“country:“+country+“|pno:”+pno);}}catch(Exception ex){ex.printStackTrace();}finally{closeConnection(conn,rs,stmt);}}..... 好了,大功告成.


阅读全文(2836) | 回复(2) | 编辑 | 精华

回复:[J2ME]Java JDBC里如何取得Oracle存储过程返回的动态结果集
文章收藏,  网上资源,  软件技术,  电脑与网络 四裤全输发表评论于2006/4/15 15:11:14

在网上看到这篇文章,但我试了,通不过啊,不知道是不是我用Hibernate的原因,错误如下:执行存储过程:PKG_XS.P_XS_THD_GETTHDMXWITHFYXX java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyCallableStatementsql:{call PKG_XS.P_XS_THD_GETTHDMXWITHFYXX(?,?) }


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.223 second(s), page refreshed 144808198 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号