2012-02-21 24 views
8

Giả sử tôi có một thủ tục được lưu trữ trả về một tập dữ liệu lớn. Tôi có thể viết một truy vấn khác để lọc kết quả của thủ tục lưu sẵn không?Tôi có thể tìm kiếm các kết quả quy trình được lưu trữ không?

Ví dụ:

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

có thể trùng lặp của [Chọn cột từ tập hợp kết quả của thủ tục lưu sẵn] (http://stackoverflow.com/questions/209383/ select-columns-from-result-set-of-of-stored-procedure) –

+0

Tôi luôn sử dụng trang web google: stackoverflow.com chọn + từ + lưu trữ + thủ tục –

Trả lời

15

Trước tiên, bạn cần chèn kết quả của quy trình được lưu trữ trên một bảng và sau đó truy vấn các kết quả đó.

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

Sửa mã của bạn. –

+0

Lưu ý rằng điều này có thể không hoạt động nếu SP sử dụng các bảng tạm thời. – yucer

0

Bạn không thể làm cho nó một phần của một truy vấn, nhưng bạn có thể chèn dữ liệu kết quả vào một bảng temp hoặc biến bảng và sau đó sử dụng cho truy vấn của bạn.

0

Bạn có thể sao chép đầu ra từ bảng này sang bảng tạm thời.

insert into #temp 
EXEC xp_readerrorlog 

và sau đó sử dụng mệnh đề where với bảng temp

0

hoặc bạn có thể làm cho một Bảng giá trị hàm

1

Có trả lại log lỗi cho chỉ là một cả ngày làm cho kết quả nữa hữu ích? Tôi nghĩ rằng nó sẽ vẫn đầy những mục vô dụng. Nếu bạn đang tìm kiếm các sự kiện cụ thể, tại sao không sử dụng một trong các tham số bộ lọc cho xp_readerrorlog? Các wil sau trả về tất cả các hàng trong nhật ký hiện tại chứa chuỗi 'không thành công':

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

Tôi vừa đăng một ví dụ, tôi sẽ tìm kiếm trên các thông số khác. Truy vấn của bạn cũng có thể hữu ích. –

Các vấn đề liên quan