繁体   English   中英

获取在sql server存储过程中更新或插入的记录数

[英]getting number of records updated or inserted in sql server stored procedure

我有一个SP插入一些记录并更新其他记录并删除一些。 我想要的是返回插入的内容,更新内容和删除内容的计数值。 我以为我可以使用@@ ROWCOUNT,但这总是给我一个1。

我的INSERT之后运行:

PRINT @@ROWCOUNT

但我的消息控制台显示了真正发生的事情和这个数字:

(36 row(s) affected)
1

所以我可以看到36条记录实际更新了,但@@ ROWCOUNT返回1。

我试图在SP的UPDATE和DELETE部分以相同的结果运行之后做同样的事情。

@@ROWCOUNT将显示受最新语句影响的行数 - 如果INSERTPRINT之间有任何语句,则它将给出错误的数字。

你能告诉我们更多的代码,以便我们看到执行的顺序吗?

根据@ninesided的答案如何为您工作,您还可以在每次更新/插入/删除时使用output子句,并从那里获取计数。

例:

declare @count table
(
    id int
)

update mytable
set oldVal = newVal
output inserted.field1 into @count

select count(*) from @count

您可以重复使用计数表,并根据需要设置变量来保存值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM