问题上下文:我使用VisualStudio 2008和类型化数据集,它们可以“轻松”访问executescalar()
执行标量返回第一个recorset 第一行的第一个字段的值(最后一部分经常被省略)
此行为的问题在于,您通常希望在之前进行其他一些请求,并使用最终select @returnValue
语句计算要返回的值。
所以我的问题一般是如何阻止SP返回中间记录集? (我试过SET FMTONLY ON / OFF但是有不必要的副作用)
另一个相关的问题是:如何阻止T-SQL UPDATE语句返回更新的行?有时您使用UPDATE来简单地更新......
谢谢!
样品:
BEGIN
SET NOCOUNT ON;
declare @c int
select @c=(select count(*) from work where ...)
select @c -- so ExecuteScalar() works
update sousblocs set myfield = @c
where ...
select @c --after the update, won't be seen by ExecuteScalar()
return @c --useless for ExecuteScalar
END
这是我的问题,可以用第一个“select @c”来解决;但我仍然想知道你是否可以禁用recorset输出....
答案 0 :(得分:1)
1 - 没有目标的存储过程中没有多个select语句。即如果您运行SELECT 1,2,3
然后SELECT 4,5,6
,它将返回2个记录集。
2 - 我不确定为什么在运行更新时会收回记录。尝试设置SET NOCOUNT ON
以关闭“xx行受影响”消息。