存储过程的统计结果

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】:

编写一个新的存储过程,为您计算。

【讨论】:

一定要考虑回答问题的其他建议并避免这种情况。

以上是关于存储过程的统计结果的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 存储过程,获取使用游标查询的结果集

求一个统计月份mysql 存储过程

oracle 存储过程中查询结果无法赋值到变量,请指教

Mysql将存储过程执行后的值赋值给变量

统计商户24个月连续流水总月数存储过程

MySQL 基于存储过程 实现数据统计按日周月份统计模板