jueves, 18 de junio de 2009

Crear una consulta T-SQL de forma dinámica

Hola!
pues os voy a mostrar una manera sencilla de crear en T-SQL un procedimiento que realice una consulta de forma dinámica. ¿Para qué lo puedo utilizar? Pues por ejemplo, imagínate que tienes un formulario web con 3 campos para filtrar y que el formulario te permite filtrar por ninguno, uno, dos o los tres campos. En el caso que no queramos buscar por uno de los campos, le daremos valor -1.

Aquí os dejo el ejemplo del procedure:

CREATE PROCEDURE [dbo].[CONSULTA_FORMULARIO]
@ID1
INT,
@ID2
INT,
@ID3
INT
AS
BEGIN

DECLARE @SQL NVARCHAR(1000)

DECLARE @nID1 NVARCHAR(100)
DECLARE @nID2 NVARCHAR(100)
DECLARE @nID2 NVARCHAR(100)

SET
@nID1 = ''
SET @nID2 = ''
SET @nID3 = ''

SET
@SQL = 'SELECT * FROM TABLE_1, TABLE_2 WHERE PK_T1 = FK_T2 '

IF @ID1 = -1 SET @nID1 =
'AND ID1 = @ID1 '
IF @ID2 = -1 SET @nID2 = 'AND ID2 = @ID2 '
IF @ID3 = -1 SET @nID3 = 'AND ID3 = @ID3 '

SET @SQL =
@SQL + @nID1 + @nID2 + @nID3

EXEC (@SQL)

END


Espero que os haya sido útil, saludos a todos!!!

No hay comentarios:

Publicar un comentario