如何在JAVA中调用SQL Server中的存储过程?

openarm 2005-11-18 11:25:49
SQL Server中的存储过程是返回是一个结果集,在java中怎么样才能获取这个结果集?
在ORACLE中可以获取返回游标的结果,在SQL SERVER中我试过了java.sql.other好象取不到结果
...全文
305 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pdvv 2005-12-19
  • 打赏
  • 举报
回复
你好,出现java.sql.SQLException: Was expecting a result set这种错误是因为返回的结果集为空。为方便使用,一般的JDBC都将这个异常忽略,但是MS SQL具体怎么处理我没有验证过。所以,为了程序严格,可以这么处理:
if(proc.executeQuery()){
ResultSet rs = proc.getResultSet();
while(rs.next()){
//处理
}
}
shimin_it 2005-12-19
  • 打赏
  • 举报
回复
大家说的都不错,只有我没有我没什么可说的 ,向大家学习中
lqm996 2005-12-18
  • 打赏
  • 举报
回复
楼上说得没有。。

在MS sqlserver 中你不管这么多,调用了存储过程,然后
CallableStatement proc = conn.prepareCall(sql); //借楼上的

ResultSet rec1=(ResultSet)proc.getObject(1);
ResultSet rec2=(ResultSet)proc.getObject(2);

这样好像都行。。。。

如果你想以游标的方式获得记录集,请使用用JTDS驱动。。很好用的。
musicdog 2005-12-18
  • 打赏
  • 举报
回复
但是,如果 存储过程中使用了临时表

比如

CREATE PROCEDURE test
AS
select * into #table1 from table1
select * from #table1
GO

会报这样一种错误

java.sql.SQLException: Was expecting a result set

请问如何解决呢 ?
xmload 2005-11-29
  • 打赏
  • 举报
回复
请问怎么获取返回值和output参数呢!
zeq258 2005-11-18
  • 打赏
  • 举报
回复
楼上应该说得很清楚了吧!
liu_you 2005-11-18
  • 打赏
  • 举报
回复
不错,楼上的..
pdvv 2005-11-18
  • 打赏
  • 举报
回复
在sql server中比oracle还要省事,因为sqlserver的存储过程可以直接返回结果集;而oracle必须使用ref cursor。

String sql = "{call sp_test(?,?)}";
CallableStatement proc = conn.prepareCall(sql);
proc.setString(1, s_year);
proc.setString(2, s_month);

ResultSet rs = proc.executeQuery();

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧