日期:2014-05-16  浏览次数:20534 次

java中使用存储过程出现"该语句没有返回结果集
先看看网上的解决办法:

源:http://hi.baidu.com/wyjsusan/item/c5fe63f5321ab4de42c36a99


两次遇到这个问题了,还是这样子解决~!
————————————————————————————我是分割线————————————————————————
如果java代码上没有问题,存储过程在SQLServer中执行也没有问题,就要检查一下存储过程的开始部分是否加上了
“SET NOCOUNT ON”
这句话,如果没有,就是这里的问题了,加上这句话,再重新执行代码,OK!通过!
一般出现这种状况是在存储过程中在使用select命令前使用了更新命令,如insert ,update,delete等命令,直接使用select命令的存储过程即使不加上“SET NOCOUNT ON”也能获得结果集,所以经常会忽略这个问题!

但是在.Net环境下没发现有这种问题,呵呵,毕竟不是一家的啊!(这个不知道,没试过。)


但是我按照他的方法弄了以后,还是会出现那样的问题

最后通过看CallableStatement的API解决的,如下:

if(cs.execute()){
ResultSet rs = cs.executeQuery();
while (rs.next()) {
                 .
                 .
                 .
不知道网上的这个具体是怎么样的存储过程,

我的存储过程:


set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


create  proc [dbo].[getCarGoodsDetails](@customerID varchar(40))
as

declare @carID varchar(40)
set @carID=(select carID from ShoppingCar where customerID=@customerID)
if(@carID is not null)

begin
  select g.goodsID,goodsName,goodsPrice,quantity from Goods g,ShoppingCarDetails s
  where g.goodsID=s.goodsID and s.carID=@carID
end