El procedimiento almacenado que os adjunto lo hago para evitar sql dinamico,
pero no se si es recomendable o no.
CREATE PROCEDURE [DR_LIQUIDACIONES]
@ANO AS VARCHAR(4),
@PARTE1 AS INT,
@PARTE2 AS INT,
@FECHA1 AS VARCHAR(8),
@FECHA2 AS VARCHAR(8),
@DOBLA1 AS INT,
@DOBLA2 AS INT
AS
SET NOCOUNT ON
IF @PARTE1!='' SELECT DOBLA FROM LIDOBLA WHERE ANO=@ANO AND NUMERO>=@PARTE1
AND NUMERO<=@PARTE2 AND ANULADA!='S' ORDER BY FECHA
ELSE IF @FECHA1!='' SELECT DOBLA FROM LIDOBLA WHERE FECHA>=@FECHA1 AND
FECHA<=@FECHA2 AND ANULADA!='S' ORDER BY FECHA
ELSE SELECT DOBLA FROM LIDOBLA WHERE DOBLA>=@DOBLA1 AND DOBLA<=@DOBLA2 AND
ANULADA!='S' ORDER BY FECHA
como veis dependiendo de que parametros estan o no vacios se hace un select
u otro.
No se si de esta manera Sql server guarda algun plan de ejecución.
¿Cual sería la buena práctica para realizar este procedimiento?. Quizas 3
procedimientos diferentes?
Saludos.
Leer las respuestas