Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/02/2010, 15:01
yera2002
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 8 meses
Puntos: 2
Varios registros en un store procedure

Hola a todos:

Tengo el siguiente problema, quiero hacer una consulta a una tabla que tiene mucha informacion, pero en varias ocasiones me ha indicado el error "QUERY TIME OUT", la tabla donde tengo la informacion esta bien indexada, pero este reporte lo ejecuto desde una aplicacion cliente.

Ahora mi duda es alguien podria asesorame como crear un Store Procedure para poder ejecutar esta sentencia SQL, ya lo intente pero a decir verdad no consigo informacion del mismo. Les muestro lo que quiero y lo que llevo del Store Procedure.

Mi Tabla

Usuario FechaAcceso Operación Tiempoacceso
USUARIO 1 30/01/2010 REVISION 1 HR
USUARIO 2 30/01/2010 REVISION 2 HR
USUARIO 3 30/01/2010 CORTE 3 MIN
USUARIO 1 30/01/2010 CORTE 3 MIN
USUARIO 2 10/02/2010 ALTA 2 MIN
USUARIO 3 10/02/2010 ALTA 2 MIN
USUARIO 1 09/02/2010 ALTA 2 MIN
USUARIO 2 09/02/2010 BAJA 2 MIN
USUARIO 3 09/02/2010 BAJA 2 MIN
USUARIO 4 09/02/2010 ALTA 2 MIN
Vamos a suponer que requiero obtener el usuario, la fecha de acceso, la operacion y el tiempo de acceso

SELECT usuario, fechaacceso, operacion, tiempoacceso FROM usuarios

Si quisiera filtrar la informacion por varios campos, para que solo muestre la informacion del usuario1 o usuario 2, que hayan dado de alta o revision entre el 30 de enero de 2010 y 10 de febrero del 2010

SELECT usuario, fechaacceso, operacion, tiempoacceso FROM usuarios
WHERE usuario >= 'USUARIO 1' AND usuario <= 'USUARIO 2' AND (operacion = 'REVISION' OR operacion = 'ALTA') AND fechaacceso >= '20100101' AND fechaacceso <= '20100210'


lo que tengo del store procedure
ALTER PROCEDURE [dbo].[Usuariosxoperacionxfecha]
--Las variable de entrada
@UsuarioInicial nvarchar(13) = '',
@UsuarioFinal nvarchar(13) = '',
@OperacionInicial nvarchar(20) = '',
@OperacionFinal nvarchar(20) = '',
@dfechainicial datetime = '01-01-2000',
@dfechaFinal datetime = '01-01-3000',
@usuario nvarchar(13) = '' OUTPUT,
@operacion nvarchar(100) = '' OUTPUT,
@tiempoacceso nvarchar(8 = '' OUTPUT,
@fechaacceso datetime = '01-01-2000' OUTPUT,
AS

BEGIN

SELECT @usuario = usuario,@fechaacceso = fechaacceso, @operacion = operacion, @tiempoacceso = tiempoacceso FROM usuarios
WHERE usuario >= @UsuarioInicial AND usuario <= @UsuarioFinal AND (operacion = @OperacionInicial OR operacion = @OperacionFinal) AND fechaacceso >= @dfechainicial AND fechaacceso <= @dfechaFinal

-- El resultado del Store Procedure
SELECT @usuario,@fechaacceso, @operacion, @tiempoacceso
END

Ojala alguien me pueda guiar, no souy muy experta en Store Procedures

Saludos...