存储过程不执行ASP .NEt

时间:2011-08-03 06:53:30

标签: .net sql-server-2008

我有一个调用存储过程的.net应用程序(SQL Server 2008)。对SP的调用失败,并显示错误消息

  

“子查询返回的值超过1。当这个值不允许时   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。“

但是当我使用与上面相同的参数从SQL Server 2008客户端手动执行SP时,我没有任何问题。

任何人都可以帮忙解决这个问题吗?

出于安全原因,我无法在此发布我的SP。

2 个答案:

答案 0 :(得分:0)

如果存储过程返回值,并且您想获取此值, 您需要在第一个过程字符串中使用SET NOCOUNT ON

编辑:抱歉,我不明白这些问题。答案是错误的。

答案 1 :(得分:0)

听起来像here所描述的问题。

您可以在存储过程正在修改的表上触发一个触发器,并对其进行编码,以期只修改一条记录。

也许你有类似的东西:

declare @XYZ int
select @XYZ = FieldA from inserted

如果您的更新修改了多条记录,则此语句将失败并显示错误消息。

除非SP本身检查环境值,否则没有理由为什么SSMS中的运行不会失败。来自suser_sname()函数的当前用户,因此可能不会因为这些值而进行任何更改,因此不会触发触发器。

如果您没有触发器,请查看上面的示例查询示例,并仔细检查它们是否永远不会返回多个值。