Select con where variable desde un WebForm... usar SQL dinámico ?

06/09/2005 - 09:09 por Marcelo Clavero | Informe spam
Estimados:

Tengo que devolver una consulta a partir de datos que recabo en un webform.
Dadas las recomendaciones que leí en este foro, no quiero armar la sentencia
SQL desde la aplicación (para evitan Injection) ni usar SQL Dinámico (salvo
que no haya otra forma).

Estoy poniendo la lógica de datos en SP's a los que paso como parámetros,
los campos recabados en los webform.
Sucede a veces, que esos parámetros deben formar la cláusula WHERE de mi
consulta dinamicamente, pues pueden llegarme vacíos o con ceros, etc.. (lo
cual puede indicar que no deben ser tomados en cuenta para el Where y por
ello se vuelve dinámico). ¿ que técnica me recomiendan ?

Paso Ejemplo simplificado:

Create Procedure Consulta
@empleado smallint, -- Este campo puede ser 0, que significa "Todos los
Empleados" ó <>0 para un empleado solo.
@desde smalldatetime, -- Este campo puede estar vacío, sino, es la fecha
tope inferior de fecha.
@hasta smalldatetime -- Este campo puede estar vacío, sino, es la fecha tope
superior de fecha.
AS
SELECT empleado, fecha FROM empleados
WHERE ...
GO

Desde ya 1000 gracias por su preciado tiempo y conocimiento.
Mis respetos
Marcelo Clavero
 

Leer las respuestas

#1 Carlos Sacristán
06/09/2005 - 09:30 | Informe spam
En ingles, pero creo que este articulo puede servirte de introduccion al
tema:

http://www.sommarskog.se/dyn-search.html


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Marcelo Clavero" escribió en el mensaje
news:
Estimados:

Tengo que devolver una consulta a partir de datos que recabo en un


webform.
Dadas las recomendaciones que leí en este foro, no quiero armar la


sentencia
SQL desde la aplicación (para evitan Injection) ni usar SQL Dinámico


(salvo
que no haya otra forma).

Estoy poniendo la lógica de datos en SP's a los que paso como parámetros,
los campos recabados en los webform.
Sucede a veces, que esos parámetros deben formar la cláusula WHERE de mi
consulta dinamicamente, pues pueden llegarme vacíos o con ceros, etc.. (lo
cual puede indicar que no deben ser tomados en cuenta para el Where y por
ello se vuelve dinámico). ¿ que técnica me recomiendan ?

Paso Ejemplo simplificado:

Create Procedure Consulta
@empleado smallint, -- Este campo puede ser 0, que significa "Todos los
Empleados" ó <>0 para un empleado solo.
@desde smalldatetime, -- Este campo puede estar vacío, sino, es la fecha
tope inferior de fecha.
@hasta smalldatetime -- Este campo puede estar vacío, sino, es la fecha


tope
superior de fecha.
AS
SELECT empleado, fecha FROM empleados
WHERE ...
GO

Desde ya 1000 gracias por su preciado tiempo y conocimiento.
Mis respetos
Marcelo Clavero


Preguntas similares