存储过程中

时间:2016-02-26 09:20:15

标签: sql-server sql-server-2008 tsql sql-server-2012

在SQL Server 2008中,有没有办法在执行存储过程后填充结果集(表)的总数。

假设我有一个内部调用另一个存储过程的存储过程。我想知道它返回的内部调用存储过程的结果集数量。

任何人都可以帮助我。

e.g。

CREATE PROCEDURE sp_GetReports
(
    @reportName AS VARCHAR(50)
)
AS
BEGIN
    DECLARE @reportProcName AS VARCHAR(50)

    SELECT  @reportProcName = ReportProcName
    FROM ReportMaster
    WHERE ReportName = @reportName;

    EXEC (@reportProcName)

    /*
    * Need to get here, total numbers of Result Sets (tables) retrived.
    */


END
GO

提前致谢。

3 个答案:

答案 0 :(得分:1)

您也许可以:

  • 获取存储过程中的行数并将结果作为OUTPUT参数获取

  • 使用某种类型的外部表(必须对此进行设计)

这为您提供了从存储过程返回的行数

chr

答案 1 :(得分:0)

解决方法怎么样?

在每个报告中创建一些计数器变量。 每次在SELECT语句之前,递增它。 然后,将其作为sproc中的最后一个输出返回。 每份报告都应遵循这一惯例。

答案 2 :(得分:-1)

您可以从内部过程返回带有@@ ROWCOUNT的输出参数,并在sp_GetReports中使用它。