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

Bal*_*roq 2 java sql-server stored-procedures jdbc

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

相关的java代码:

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

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

CREATE PROCEDURE [dbo].[sp_groups_select] AS
update Computers set ComputerName='Foo'  where ComputerName='bar';
select * from Computers;
Run Code Online (Sandbox Code Playgroud)

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

CREATE PROCEDURE [dbo].[sp_groups_select] AS
select * from Computers;
update Computers set ComputerName='Foo'  where ComputerName='bar';
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 7

可能是因为你需要 SET NOCOUNT ON

(x rows affected)等效被处理为在客户端一个结果,这bollixescstmt.getResultSet().next()

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