存储过程的统计结果
Posted
技术标签:
【中文标题】存储过程的统计结果【英文标题】:Counting results of stored procedure 【发布时间】:2009-02-19 10:28:18 【问题描述】:我有一个存储过程返回 ID、名称、描述并且不接受输入参数。但是,我感兴趣的是我能得到多少结果。
我期待这样的工作:
SELECT COUNT(*) FROM EXEC MyStoredProcedure
但我在 SqlServer Managment Studio 中收到以下错误: 关键字“EXEC”附近的语法不正确。 你能告诉我一个小代码示例我该怎么做吗?
【问题讨论】:
【参考方案1】:这行不通。我可以建议:
exec MyStoredProcedure
select @@rowcount
或者,您可以将计数作为输出参数返回
【讨论】:
对不起:msdn.microsoft.com/en-us/library/ms189837.aspx。 @@ROWCOUNT 继续工作 你刚刚为我节省了几个小时。谢谢! @@rowcount 的结果在我的情况下大部分是 1。我通过对执行 SP 的 OPENROWSET 使用 COUNT() 解决了这个问题,如***.com/a/40084013/54908。【参考方案2】:您需要将逻辑放入存储过程中并从存储过程中返回计数。您可以在查询后立即使用@@ROWCOUNT 变量来执行此操作。这至少可以在 MS SQL Servet 中工作。
存储过程:
CREATE PROC MyPROC
AS
DECLARE @MyCount int
...
SELECT * FROM MyTable WHERE ...
SELECT @MyCount = @@ROWCOUNT
...
return @MyCOunt
调用代码:
DECLARE @MyCount int
EXEC @MyCount = EXEC MyProc
【讨论】:
好的,这会起作用,但是您也可以使用 SELECT COUNT(*) FROM Table。我认为他仍然想要他的数据...如果不是,他应该使用 COUNT ...【参考方案3】:SELECT @@ROWCOUNT
【讨论】:
【参考方案4】:编写一个新的存储过程,为您计算。
【讨论】:
一定要考虑回答问题的其他建议并避免这种情况。以上是关于存储过程的统计结果的主要内容,如果未能解决你的问题,请参考以下文章