1

问题上下文:我使用 VisualStudio 2008 和类型化数据集,它们提供了对 Execute 标量的“简单”访问,executescalar() 返回第一个记录集第一行的第一个字段的值最后一部分经常被省略

这种行为的问题在于,您通常希望在计算最终语句返回的值之前发出一些其他请求。select @returnValue

所以我的问题是,一般来说,如何防止 SP 返回中间记录集? (我尝试了 SET FMTONLY ON/OFF 但有不想要的副作用)

另一个相关问题是:如何防止 T-SQL UPDATE 语句返回更新的行?有时您使用 UPDATE 来简单地 UPDATE ...

谢谢!

样本:

开始

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

结尾

这是我的问题,可以通过第一个“select @c”解决;但我仍然想知道你是否可以禁用记录输出....

4

1 回答 1

1

1 - 没有目标的存储过程中不要有多个选择语句。即,如果您运行SELECT 1,2,3,然后SELECT 4,5,6它将返回 2 个记录集。

2 - 我不确定为什么在运行更新时会取回记录。尝试设置SET NOCOUNT ON关闭“xx 行受影响”消息。

于 2010-12-10T14:26:06.470 回答