Как получить COUNT из возврата хранимой процедуры? - PullRequest
4 голосов
/ 17 сентября 2010

У меня есть хранимая процедура в 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 ]

6 голосов
/ 17 сентября 2010

Вам необходимо создать временную таблицу для хранения результатов хранимой процедуры. Затем вы можете запросить временную таблицу. Схема временной таблицы должна соответствовать выходным данным хранимой процедуры.

Пример:

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 голосов
/ 17 сентября 2010

Вы можете вставить данные в оперативную или временную таблицу (в зависимости от объема данных).

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 
...