我有一个SP,可以插入一些记录并更新其他记录并删除一些记录。我想要的是返回插入的内容,更新内容和删除内容的计数值。我以为我可以使用@@ ROWCOUNT,但这总是给我一个。
我的INSERT之后运行:
PRINT @@ROWCOUNT
但是我的留言控制台显示了真正发生的事情和这个号码:
(36 row(s) affected)
1
所以我可以看到36条记录实际更新了,但@@ ROWCOUNT返回了1。
我试图在SP的UPDATE和DELETE部分以相同的结果运行之后做同样的事情。
答案 0 :(得分:8)
@@ROWCOUNT
将显示受最新声明影响的行数 - 如果您在INSERT
和PRINT
之间有任何声明,那么它将为您提供错误的数字。< / p>
您能告诉我们更多代码,以便查看执行顺序吗?
答案 1 :(得分:1)
根据@ninesided的答案如何为您服务,您还可以在每次更新/插入/删除时使用output
子句,并从那里获取计数。
示例:
declare @count table
(
id int
)
update mytable
set oldVal = newVal
output inserted.field1 into @count
select count(*) from @count
您可以重复使用计数表,并根据需要设置变量来保存值。