2012-02-21 15 views
8

Digamos que tengo un procedimiento almacenado que devuelve un gran conjunto de datos. ¿Puedo escribir otra consulta para filtrar el resultado del procedimiento almacenado?¿Puedo buscar resultados de procedimientos almacenados?

Por ejemplo:

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

posible duplicado de [seleccionar las columnas de conjunto de resultados del procedimiento almacenado] (http://stackoverflow.com/questions/209383/ select-columns-from-result-set-of-stored-procedure) –

+0

Siempre uso el sitio de google: stackoverflow.com select + from + stored + procedure –

Respuesta

15

Debería primero insertar los resultados del procedimiento almacenado en una tabla, y luego consultar esos resultados.

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

Se corrigió también tu código. –

+0

Tenga en cuenta que esto podría no funcionar si SP usa tablas temporales. – yucer

0

Usted no puede hacer que sea parte de una consulta, pero se puede insertar los datos resultantes en una tabla temporal o variable de tabla y luego utilizar eso para su consulta.

0

Puede copiar la salida de sp a la tabla de tiempo.

insert into #temp 
EXEC xp_readerrorlog 

y luego utilice cláusula where con la tabla temporal

0

o se puede hacer una con valores de tabla Función

1

¿Tiene devolver el registro de errores por sólo un día entero hacer que el resultado más ¿útil? Creo que todavía estará lleno de entradas inútiles. Si está buscando eventos específicos, ¿por qué no utiliza uno de los parámetros de filtro para xp_readerrorlog? La siguiente wil devolver todas las filas en el registro de la corriente que contiene la cadena 'fallar':

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

Derecho Publiqué solo un ejemplo, voy a buscar en otros parámetros. Tu consulta también puede ser útil. –

Cuestiones relacionadas