Hola:
Me enfrento a la necesidad de realizar una consulta operando con operadores
lógicos.. pero ciertamente no doy con la solución. Os expongo el
problemilla.
Sea una tabla por ej. con tres campos.
ID - Int.
Nombre- varchar(30)
Activo - bit
Pues bien, tengo que llamar a un procedimiento al que se le pasa el
parámetro
@vActivo que puede tener tres valores posibles: 0, 1, 2
En el caso de que sea 0 deben aparecer todos los que tengan Activo=0, en el
caso de 1 deben aparecer todos los que Activo=1 y en el caso de 2 deben
aparecer TODOS, estén activos o no.
Por favor, NO indicar como solución
IF @vActivo=2 then
SELECT * FROM tabla
ELSE
SELECT * FROM TABLA Where Activo=@vActivo
Ya que la consulta real tiene muchos más campos y condicionantes, lo que
busco es no tener que usar el IF ni TAMPOCO generar una cadena dinámica para
luego ejecutarla
Es decir.. tampoco sería válida la solución.
DECLARE @vstrSQL as varchar(200)
SET @vstrSQL='SELECT * FROM TABLA '
If @vActivo!=2
SET @vstrSQL = ¡ @vstrSQL + ' WHERE Activo= ' + cast(@vActivo as
varchar)
EXEC(@vstrSQL)
Gracias a todos y un saludo.
PedroJ.
Leer las respuestas