2012-02-21 105 views
8

假設我有一個存儲過程,它返回一大組數據。我可以編寫另一個查詢來過濾存儲過程的結果嗎?我可以搜索存儲過程結果嗎?

例如:

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

可能出現[從存儲過程的結果集中選擇列](http://stackoverflow.com/questions/209383/ select-columns-from-result-set-of-stored-procedure) – 2012-02-21 13:39:39

+0

我總是用google的網站:stackoverflow.com select + from + stored + procedure – 2012-02-21 14:51:35

回答

15

您需要先將存儲過程的結果插入表中,然後查詢這些結果。

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

INSERT INTO #Result 
EXEC xp_readerrorlog 

SELECT * 
FROM #Result 
WHERE datepart(yy,LogDate) = '2012' 
+0

修復了你的代碼。 – 2012-02-21 14:05:55

+0

請注意,如果SP使用臨時表,這可能不起作用。 – yucer 2014-11-10 10:38:13

0

你不能讓它查詢的一部分,但你可以得到的數據插入到一個臨時表或表變量,然後利用它來進行查詢。

0

您可以將輸出從sp複製到節奏表。

insert into #temp 
EXEC xp_readerrorlog 

,然後用其中具有臨時表條款

0

,或者你可以做一個表值函數

1

是否返回錯誤日誌只是一個整天做的結果更多有用?我認爲它仍然會充滿無用的條目。如果您正在查找特定事件,爲什麼不使用xp_readerrorlog的某個篩選器參數?以下內容將返回當前日誌中包含字符串'fail'的所有行:

EXEC xp_readerrorlog 0, 1, 'fail'; 
+0

對,我只是舉了一個例子,我會在其他參數上搜索。您的查詢也會有幫助。 – 2012-02-21 14:03:14

相關問題