chenhua_1984 发表于 2013-2-1 12:00:08

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

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);
页: [1]
查看完整版本: jdbc调用oracle 函数,传入String返回CURSOR