假设我有一个存储过程,它返回一大组数据。我可以编写另一个查询来过滤存储过程的结果吗?
例如:
select * from
EXEC xp_readerrorlog
where LogDate = '2011-02-15'
答案 0 :(得分:17)
您需要先在表上插入存储过程的结果,然后查询这些结果。
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 :(得分:1)
将错误日志返回一整天会使结果更有用吗?我认为它仍然会充满无用的条目。如果您正在寻找特定事件,为什么不使用xp_readerrorlog的一个过滤器参数?以下wil将返回当前日志中包含字符串'fail'的所有行:
EXEC xp_readerrorlog 0, 1, 'fail';
答案 2 :(得分:0)
您无法将其作为查询的一部分,但您可以将结果数据插入临时表或表变量中,然后将其用于查询。
答案 3 :(得分:0)
您可以将sp的输出复制到临时表。
insert into #temp
EXEC xp_readerrorlog
然后使用带有临时表的where子句
答案 4 :(得分:0)
或者您可以制作表值函数