【发布时间】:2019-09-05 06:18:51
【问题描述】:
如何获取存储过程中所有输出的行数?
例如
Create Proc Test
AS Begin
select top 10 * from sysobjects
select top 20* from sysobjects
End
@@rowcount 将返回输出行数。但就我而言,有 2 个输出。 @@rowcount 将只返回最后一个输出。
exec Test
select @@rowcount
这只会返回 20。但我需要 10、20
有什么方法可以实现吗?
【问题讨论】:
-
如文档中所述 docs.microsoft.com/en-us/sql/t-sql/functions/…
@@rowcount返回受最后一条语句影响的行数。要获取10和20您需要在存储过程中执行此操作 -
您可以确保
SET NOCOUNT是OFF然后解析“x 行受影响”消息。但是就像其他答案中已经建议的那样,在存储过程本身内部计算这个要干净得多 -
给出的过程是样本,在生产中有多个输出的过程。我看到人们建议在 proc 中计数。问题是我无法更改 procs 中的任何内容。但我需要影响行数。
-
@MartinSmith :好的建议将尝试解析 x 行受影响的消息。有什么线索可以在变量中获取这些消息?
标签: sql sql-server stored-procedures rowcount