【问题标题】:No resultset if the store procedures does an update before the select on MSSQL server 2005如果存储过程在 SQL Server 2005 上的选择之前进行更新,则没有结果集
【发布时间】:2011-06-16 03:12:55
【问题描述】:

如果我在存储过程中选择之前进行更新,是否有人知道为什么我不会得到结果集。我正在运行 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';

【问题讨论】:

  • 你是直接在数据库上运行的吗? (尝试查看这是 SQL-Server 问题还是 Java)

标签: java sql-server stored-procedures jdbc


【解决方案1】:

可能是因为你需要SET NOCOUNT ON

(x rows affected) 等效项在客户端中作为结果集进行处理,从而将cstmt.getResultSet().next() bollixs 处理

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

【讨论】:

  • 啊,就是这样,现在可以了
  • @gbn 我请你喝一杯。在过去的四个小时里,DBA 先生一直在努力解决这个问题
猜你喜欢
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 2012-01-15
  • 2023-03-20
相关资源
最近更新 更多