如果存储过程在MSSQL服务器2005上的选择之前执行更新,则无结果集

有没有人知道为什么我不会得到结果集如果我在商店程序中的选择之前做更新。 我正在运行MSSQL server 2005和最新的Microsoft JDBC驱动程序。

相关的java代码:

CallableStatement cstmt = con.prepareCall("{call dbo.sp_groups_select}"); if (cstmt.execute()) { while (cstmt.getResultSet().next()) 

如果存储过程如下所示,则不会获得结果集:

 CREATE PROCEDURE [dbo].[sp_groups_select] AS update Computers set ComputerName='Foo' where ComputerName='bar'; select * from Computers; 

但如果它看起来像这样我得到一个结果集

 CREATE PROCEDURE [dbo].[sp_groups_select] AS select * from Computers; update Computers set ComputerName='Foo' where ComputerName='bar'; 

可能是因为你需要SET NOCOUNT ON

(x rows affected)等效项在客户端中作为结果集处理,bollixes cstmt.getResultSet().next()

关于SET NOCOUNT ON我的问题的无耻插件