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

Preguntas similare

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


Respuesta Responder a este mensaje
#2 Marcelo Clavero
06/09/2005 - 13:37 | Informe spam
Muchas Gracias Carlos.
Muy buen artículo, lo estoy estudiando, pero por lo que ya he visto, me va a
servir. !!!
Veré cuáles de las alternativas que presenta, se adecuará mejor a mi
necesidad.

Saludos

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
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
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida