六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 39|回复: 0

jdbc调用oracle 函数,传入String返回CURSOR

[复制链接]

升级  88%

138

主题

138

主题

138

主题

举人

Rank: 3Rank: 3

积分
464
 楼主| 发表于 2013-1-26 14:38:01 | 显示全部楼层 |阅读模式
create or replace function open_sql_cursor (v_sql varchar2) return   sys_refcursor is c   sys_refcursor; begin    open c for v_sql;     return c;end; 
JDBC调用代码
ResultSet rs1=null;CallableStatement call=null;String type="";String newSql ="{? = call asset.open_sql_cursor(?)}";try {conn = this.getDataSource().getConnection();call=conn.prepareCall(newSql);call.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);call.setString(2, sql);call.execute();//rs = ((OracleCallableStatement)call).getCursor(1);rs=(ResultSet)call.getObject(1);AuditInfo auditInfo;while(rs.next()){String errmsg = rs.getString("errmsg");Date loginTime = rs.getDate("loginTime");String dbUser = rs.getString("dbUser");String application = rs.getString("application");                         。。。。。。。。。。。   1函数是在asset账号下面 ,故有    String newSql ="{? = call asset.open_sql_cursor(?)}";
 
  2传参,从左往右,依次为1 ,2.。。。。。。
 
  3执行时使用   CallableStatement call=null;
prepareCall(newSql); 
 4取值有两种办法
 
rs = ((OracleCallableStatement)call).getCursor(1);rs=(ResultSet)call.getObject(1);
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表