C# 为什么我的select@@rowcount返回子查询的SqlException返回的值超过1?

C# 为什么我的select@@rowcount返回子查询的SqlException返回的值超过1?,c#,sql-server,C#,Sql Server,我有一个调用存储过程的应用程序,它执行以下操作: update tableA set duedate=@duedate where id=@id; select @@RowCount; 在客户端服务器上部署应用程序时,我收到一个错误: 子查询返回的值超过1。当子查询后跟=、!=、=或子查询用于表达式时,不允许这样做 我在C#中使用命令: executeScalar(...) 配置中是否有我似乎缺少的东西?我已经在我的服务器上测试了它,它似乎工作得很好 编辑:整个存储过程 SET ANSI_N

我有一个调用存储过程的应用程序,它执行以下操作:

update tableA set duedate=@duedate where id=@id;
select @@RowCount;
在客户端服务器上部署应用程序时,我收到一个错误:

子查询返回的值超过1。当子查询后跟=、!=、=或子查询用于表达式时,不允许这样做

我在C#中使用命令:

executeScalar(...)
配置中是否有我似乎缺少的东西?我已经在我的服务器上测试了它,它似乎工作得很好

编辑:整个存储过程

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE UpdateDueDates
-- Add the parameters for the stored procedure here
@batchNumber varchar(15),
@dueDate date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
update dbo.ItemTable
set DUEDATE = @dueDate
where
BATCHNUMBER = @batchNumber;

-- Returns the number of Updates
select @@ROWCOUNT;
END
GO

我怀疑TableA上有一个更新触发器。我见过许多触发器,它们假定一次插入或更新一行。当执行更新多行的update语句时,触发器将失败。

为什么要同时使用mysql和sql server标记它?它们是不同的产品。显示您SP的代码。尝试设置
SET NOCOUNT ON在备件开始时,您确定存储过程中只有这些吗?是的。这就是为什么它在我的开发服务器上工作,而不是在他们的服务器上。这让我很困惑。。这只是一个简单的更新声明…谢谢。对于在其中包含select语句的特定表,在其一侧有一个触发器。那我就得重写我的脚本了。有什么建议吗?我能想到的唯一一件事就是编写一个seaprate stromed proc来对传入的参数进行选择计数(1)?您确定是@Rowcount引发了错误吗?我想可能是更新了。是的,是更新了。但是,由于更新正在执行多个select语句,这将打乱executeScalar()。我目前的解决方法是在更新时使用executeNonQuery(),然后使用select count(1)查看应该更新的行数。我认为长期的解决方案是让某人重新编写触发器,以便它正确处理影响多行的更新语句。