如何从存储过程返回COUNT?

Kro*_*ica 4 sql-server stored-procedures return count sql-server-2008

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

exec dbo.Select_Data 0, 0, 18, 50
Run Code Online (Sandbox Code Playgroud)

我需要一些东西来计算返回的行:

select count(*) from (exec dbo.Select_Data 0, 0, 18, 50)
Run Code Online (Sandbox Code Playgroud)

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

select Id, Name from (exec dbo.Select_Data 0, 0, 18, 50) where Id=10
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

cod*_*ger 6

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

例:

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
Run Code Online (Sandbox Code Playgroud)

  • 检查`@@ rowcount`而不是`SELECT COUNT(*)FROM#temp`应该保存临时表的扫描. (2认同)