当前位置: 技术问答>java相关
jdbc的ResultSet能否用储存过程返回多个数据集?
来源: 互联网 发布时间:2015-02-08
本文导语: 谢谢 | 可以的。 使用CallableStatement而不是用Statement(CallableStatement是专门用来处理SQL stored procedures的)。 取回多个数据集的方法为: getResultSet 获得第一个结果集 先调用 getMoreResults 方法,然...
谢谢
|
可以的。
使用CallableStatement而不是用Statement(CallableStatement是专门用来处理SQL stored procedures的)。
取回多个数据集的方法为:
getResultSet 获得第一个结果集
先调用 getMoreResults 方法,然后再调用 getResultSet 方法,这样可以得到第二个数据集
使用CallableStatement而不是用Statement(CallableStatement是专门用来处理SQL stored procedures的)。
取回多个数据集的方法为:
getResultSet 获得第一个结果集
先调用 getMoreResults 方法,然后再调用 getResultSet 方法,这样可以得到第二个数据集
|
上面只返回一个字符串,再换一个:
//调用存储过程来查询:
String str="";
CallableStatement cs = conn.prepareCall("{? =call zdrk.pkg_code.Get_code_List(?)}");
cs.registerOutParameter(1,OracleTypes.CURSOR);
cs.setString(2,table_name.substring(10));
cs.execute();
//Cast CURSOR to ResultSet
ResultSet rs = (ResultSet)cs.getObject(1);
int i=0;
//如果table_name为number类型,则在长度不为leng的数字前加 0 ,这样保证数据的一致性
while(rs.next())
{
str=rs.getString(1);
while(str.length()
//调用存储过程来查询:
String str="";
CallableStatement cs = conn.prepareCall("{? =call zdrk.pkg_code.Get_code_List(?)}");
cs.registerOutParameter(1,OracleTypes.CURSOR);
cs.setString(2,table_name.substring(10));
cs.execute();
//Cast CURSOR to ResultSet
ResultSet rs = (ResultSet)cs.getObject(1);
int i=0;
//如果table_name为number类型,则在长度不为leng的数字前加 0 ,这样保证数据的一致性
while(rs.next())
{
str=rs.getString(1);
while(str.length()