如何用java获得Oracle的function返回Cursor
3个回答
展开全部
就是通过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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FN_fun(IN_con CHAR) 你的参数是字符型的,而不是字符串
但你在java调用时用的是字符串
callstmt.setString(2,con);
这当然出错了
你改一下 FN_fun(IN_con CHAR) 为 FN_fun(IN_con varchar2)
这样应该可以了 !
但你在java调用时用的是字符串
callstmt.setString(2,con);
这当然出错了
你改一下 FN_fun(IN_con CHAR) 为 FN_fun(IN_con varchar2)
这样应该可以了 !
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能,因为脱离了 SP,cursor 没任何意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询