如何从存储过程返回COUNT?

时间:2010-09-17 08:22:28

标签: sql-server sql-server-2008 stored-procedures count return

我在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 个答案:

答案 0 :(得分:5)

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

示例:

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

答案 1 :(得分:2)

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

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