Select y filtro

08/06/2009 - 22:23 por Cristian Meneses | Informe spam
Buenas tardes
Tengo un procedimiento almacenado sobre SQL2005 Express...
El mismo recibe por parametro una variable @SQLFILTRO varchar(5000).
Actualmente funciona bien de forma que me filtra como quiero. A
continuacion el SELECT

DECLARE @SQL AS VARCHAR(8000)
SET @SQL = 'SELECT
A.Campo1
A.Campo2
A.Campo3
FROM A
INNER JOIN B ON A.ID = B.ID
WHERE A.Eliminado = 0 AND ' + @SQLFiltro
EXEC (@SQL)

De esta forma puedo pasar por parametro desde mi aplicacion por ej
Campo1 = 158.
El problema radica cuando este parametro hace referencia a un campo
que no muestro, por ej, Campo5 = '01/01/2009'
El tema es que quiero mostrar siempre el campo del parametro y no se
como hacerlo. Pense en usar CASE WHEN o IF pero son muchos campos
posibles. Quizas exista alguna mejor forma.
Muchas gracias


Cristian Meneses
 

Leer las respuestas

#1 Carlos M. Calvelo
08/06/2009 - 22:50 | Informe spam
Hola Cristian,

On 8 jun, 22:23, Cristian Meneses wrote:
Buenas tardes
Tengo un procedimiento almacenado sobre SQL2005 Express...
El mismo recibe por parametro una variable @SQLFILTRO varchar(5000).
Actualmente funciona bien de forma que me filtra como quiero. A
continuacion el SELECT

DECLARE @SQL AS VARCHAR(8000)
SET @SQL = 'SELECT
A.Campo1
A.Campo2
A.Campo3
FROM A
INNER JOIN B ON A.ID = B.ID
WHERE A.Eliminado = 0 AND ' + @SQLFiltro
EXEC (@SQL)

De esta forma puedo pasar por parametro desde mi aplicacion por ej
Campo1 = 158.
El problema radica cuando este parametro hace referencia a un campo
que no muestro, por ej, Campo5 = '01/01/2009'
El tema es que quiero mostrar siempre el campo del parametro y no se
como hacerlo. Pense en usar CASE WHEN o IF pero son muchos campos
posibles. Quizas exista alguna mejor forma.
Muchas gracias




Me parece que la esencia es que solo quieres ver los registros de
A que no hayan sido eliminados (A.Eliminado = 0). Entonces puedes
crear una vista sobre A solo para eso. Usa esa vista en vez de la
tabla A en tus consultas, no dés derechos de acceso a la tabla
original y olvídate de ese procedimiento. Ese es mi consejo.

Hasta puedes darle otro nombre a la tabla original, darle el nombre
A a la vista y los registros eliminados desaparecerán de los
resultados de las consultas existentes.

(Quizás no sea este el tipo de consejo que estabas esperando,
pero es que no le veo otra razón de ser a ese procedimiento)

Saludos,
Carlos

Preguntas similares