Counting the number of rows returned by stored procedure

前端 未结 7 1729
礼貌的吻别
礼貌的吻别 2021-01-03 23:11

How do I count the number of rows a stored procedure would return the fastest way. Stored procedure returns rows around 100K to 1M records.

7条回答
  •  时光取名叫无心
    2021-01-03 23:36

    The answer is to use @@ROWCOUNT is still valid, but I would not recommend to run in directly after EXEC like on existing answer.

    SELECT statement is not always the last statement is stored procedure or you could have multiple SELECT statements:

    Scenario:

    CREATE PROCEDURE p
    AS
    BEGIN
      CREATE TABLE #t(i INT);
      INSERT INTO #t(i) VALUES (1),(2);
      SELECT i FROM #t;
      DROP TABLE IF EXISTS t;
    END
    
    EXEC p;
    -- i
    -- 1
    -- 2
    
    SELECT @@ROWCOUNT;
    -- 0 instead of 2
    

    db<>fiddle demo


    One way is to use output parameter(as many as stored procedure resultset):

    CREATE PROCEDURE p(@cnt INT OUT)
    AS
    BEGIN
      CREATE TABLE #t(i INT);
      INSERT INTO #t(i) VALUES (1),(2);
      SELECT i FROM #t;
      SET @cnt = @@ROWCOUNT;  -- immediately after SELECT
      DROP TABLE IF EXISTS t;
    END
    
    DECLARE @i INT;
    EXEC p2 @cnt = @i OUT;
    SELECT @i;
    -- 2
    

    db<>fiddle demo

提交回复
热议问题