Могу ли я искать результаты хранимых процедур? - PullRequest
10 голосов
/ 21 февраля 2012

Допустим, у меня есть хранимая процедура, которая возвращает большой набор данных.Могу ли я написать другой запрос, чтобы отфильтровать результат хранимой процедуры?

Например:

select * from
EXEC xp_readerrorlog
where LogDate = '2011-02-15'

Ответы [ 5 ]

17 голосов
/ 21 февраля 2012

Сначала необходимо вставить результаты хранимой процедуры в таблицу, а затем запросить эти результаты.

create table #result (LogDate datetime, ProcessInfo varchar(20),Text text)

INSERT INTO #Result
EXEC xp_readerrorlog

SELECT *
FROM #Result
WHERE datepart(yy,LogDate) = '2012'
1 голос
/ 21 февраля 2012

Делает ли возвращение журнала ошибок за целый день полезным результат? Я думаю, что это все еще будет полно бесполезных записей. Если вы ищете конкретные события, почему бы не использовать один из параметров фильтра для xp_readerrorlog? Следующий код вернет все строки в текущем журнале, которые содержат строку «fail»:

EXEC xp_readerrorlog 0, 1, 'fail';
0 голосов
/ 21 февраля 2012

или вы можете сделать Табличную функцию

0 голосов
/ 21 февраля 2012

Вы можете скопировать вывод из sp в временную таблицу.

insert into #temp
EXEC xp_readerrorlog

и затем использовать выражение where с временной таблицей

0 голосов
/ 21 февраля 2012

Вы не можете сделать это частью запроса, НО вы можете вставить полученные данные во временную таблицу или переменную таблицы, а затем использовать их для вашего запроса.

...