我在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
我该怎么做?
答案 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