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

Hola a todos:

Como creo que debe ser todo esto me dispongo a mostrarles las 2 solucines que encontre al problema que de inicio expuse. Forzar al cliente a darme siempre los datos que requiere el Query. De tal modo que mi Store Procedure quedo de la siguiente manera:

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'
AS

BEGIN

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

END

Esta opcion me la otorgo Flaviovich. En este procedimiento lo que realizo es enviar la informacion especifica de los filtros, esta misma se guarda en las variables @usuarioinicial, @usuariofinal,@operacioninicial,@operacionfinal,@d fechainicial y @fechafinal

Y la forma de ejecutarlo es:

Exec [dbo].[Usuariosxoperacionxfecha]
'USUARIO1','USUARIO30','ALTA','REVISION','20100101 ','20100228'

Por otro lado tambien probe con un query dinamico y el store procedure lo hice la siguiente manera

ALTER PROCEDURE [dbo].[Usuariosxoperacionxfecha]
--Las variable de entrada
@WHERE nvarchar(2000) = ''
AS

BEGIN
DECLARE @QUERY nvarchar(2000) = '';
SET @QUERY = ('SELECT usuario, fechaacceso, operacion, tiempoacceso
FROM usuarios' + @WHERE

EXEC (@QUERY)

END

En este procedimiento lo que hago es enviar todas las condicionantes dentro de la variable @WHERE y ejecuto el mismo antes de finalizar el procedimieto.

La forma de ejecutarlo es:

Exec [dbo].[Usuariosxoperacionxfecha]
' WHERE usuario >= ''USUARIO1'' AND usuario <= ''USUARIO2'' '

Debo hacer notar que las comillas que parecen dobles, son 2 comillas simples

Espero sirva de referencia.

Saludos...