代码之家  ›  专栏  ›  技术社区  ›  Kromster Satyajit

如何从存储过程返回中获取计数?

  •  4
  • Kromster Satyajit  · 技术社区  · 14 年前

    我在SQL中有一个无法更改的存储过程。它只需要很少的输入参数,并返回一个包含100多行和若干列的表。

    exec dbo.Select_Data 0, 0, 18, 50
    

    我需要一些东西来获取返回行的计数:

    select count(*) from (exec dbo.Select_Data 0, 0, 18, 50)
    

    以及从例如名称列中获取值的方法:

    select Id, Name from (exec dbo.Select_Data 0, 0, 18, 50) where Id=10
    

    我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  5
  •   codingbadger    14 年前

    您需要创建一个临时表来保存存储过程的结果。然后可以查询临时表。临时表的架构必须与存储过程的输出匹配。

    例子:

    CREATE TABLE #temp
    (
    ID INT,
    NAME VARCHAR(100),
    ...
    )
    
    INSERT INTO #temp
    Exec dbo.MyStoredProc
    
    SELECT COUNT(*) FROM #temp
    
    SELECT ID, NAME FROM #temp 
    WHERE ID = 10
    
    DROP TABLE #temp
    
        2
  •  2
  •   Bronumski    14 年前

    您可以将数据插入内存或临时表(取决于数据量)。

    DECLARE @TempTable TABLE
    (
         ID INT,
         DATA VARCHAR(20)
    )
    INSERT INTO @TempTable 
    EXEC sp_executesql N'select 1 AS ID, ''Data'' AS DATA'
    
    SELECT
    *
    FROM @TempTable