如何用java获得Oracle的function返回Cursor

如题所述

第1个回答  推荐于2016-03-26
就是通过JDBC的连接数据库,调用存储过程方式,只是需要把返回参数给标注一下。以下是在网上找的示例代码:
Class c = Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","HH","HH");
CallableStatement cstmt = conn.prepareCall("{call TEST_CURSOR.TEST(?)}");
cstmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); //输出参数需要注册
cstmt.execute();
ResultSet rs = (ResultSet)cstmt.getObject(1); //注意是getObject,没有getCursor这种方法
while(rs.next())
{
System.out.println("id:"+rs.getInt(1)+" name:"+rs.getString(2)+" grade:"+rs.getInt(3));
}
摘抄至:http://blog.chinaunix.net/uid-8824503-id-2453541.html
第2个回答  2014-12-26
FN_fun(IN_con CHAR) 你的参数是字符型的,而不是字符串
但你在java调用时用的是字符串
callstmt.setString(2,con);
这当然出错了
你改一下 FN_fun(IN_con CHAR) 为 FN_fun(IN_con varchar2)
这样应该可以了 !本回答被提问者和网友采纳
第3个回答  2014-12-25
不能,因为脱离了 SP,cursor 没任何意义
相似回答