Definir SP generico para borrar

02/12/2004 - 16:29 por Jose | Informe spam
Hola uno podria hacer un SP generico que al enviarle de parametro un nombre
de tabla y la condicion me haga un DELETE en la tabla indicada de los
registros que cumplen la condicion enviada en parametro ?

Preguntas similare

Leer las respuestas

#6 Maxi
02/12/2004 - 18:55 | Informe spam
En tu caso no habria problema!! el gran dilema es la seguridad y la no
necesidad de armarlo en un SP


Salu2
Maxi


"Jose" escribió en el mensaje
news:
>
Para poder realizarlo necesitarias usar Sql-Dinamico, cuando usas esta
tecnica estas desaprovechando lo que es un SP

Porque no armas un SP por tabla? es lo ideal por varias razones de
seguridad, escalabilidad, prolijidad




y velocidad de ejecucion ???






Respuesta Responder a este mensaje
#7 Jose
02/12/2004 - 19:34 | Informe spam
Porque no revisas: http://www.hayes.ch/sql/sql_dinamico.html
Por otro lado, cual es el problema de en la estacion construir el


DELETE
==> SqlStr="DELETE " + Tabla + " WHERE " + Condicion
==> En vez de concatenar y ejecutar en SQL. La diferencia de seguridad es
importantisima. Si lo haces desde la estacion el usuario debe tener


permisos


Eso lo tengo claro y de hecho trabajaba asi hasta que leyendo hilos de este
mismo foro me "convencieron" (el amigo Maxi, a la cabeza) de la conveniencia
de tener un SP para todo inclusive para las acciones insert, delete,update
porque es mas eficiente, mas seguro, mas organizado, etc. etc. etc. etc.

Sin embargo ahora tu me sugieres que lo haga desde la estacion. Quien los
entiende, amigos!!!. X-DDDD

Ya una vez alguien decia con razon en este foro algo como esto: "En SQL
server uno nunca tiene claro cual es la mejor ruta para hacer algo porque
parece que todas las soluciones son subjetivas y discutibles, lo cual no
pasa en otros ambientes como los lenguajes de programacion por ejemplo"


De todos modos, Gracias por la colaboracion
Respuesta Responder a este mensaje
#8 Battle Troll
02/12/2004 - 19:47 | Informe spam
Hola compañero.
Creo que son 2 cosas distintas: si algo me ha quedado claro leyendo los
posts en este foro, es que es mejor hacer un SP que haga "algo" que
enviarle la consulta desde nuestro front-end. Hasta aqui todos de acuerdo.
Ahora bien, otra cosa es querer usar SQL dinámico, que por lo que he leido
si bien puede ser una solucion aceptable en algunos casos tiene 2 contras
muy fuertes: ralentiza la ejecucion del codigo, y (el mas importante) es
una potencial puerta abierta, un boquete a la seguridad muy fuerte...

¿Posible solucion? ¿Que problema hay en crear un proc. almacenado para
cada tabla donde quisieras borrar filas?
Si quieres creo que hasta se le podria dar una vuelta de tuerca mas y
crear un SP "maestro" desde donde mandes llamar al SP correspondiente
dependiendo del valor que tome el parametro "tabla", y re-enviandole el
parametro "condiciones" para el "WHERE" dentro de ese SP...

Quizas conceptualmente el concepto no nos parezca tan limpio como con el
sql dinamico, pero en el peor de los casos si tratan de inyectarle codigo
a tu aplicacion, el SP maestro sencillamente abortara con un mensaje de
error diciendo que "esa tabla no existe" o algo asi... y desde ese mismo
SP podrias hacer una validacion minima de las condiciones...
Y el desempeño tambien sera varias veces mejor.

La mayoria de las preguntas que se nos pudieran ocurrir ya fueron
preguntadas y contestadas anteriormente.
Puedes buscar en los archivos de Usenet a través de Google:
http://groups-beta.google.com/group....es.access
http://groups-beta.google.com/group....sqlserver
Respuesta Responder a este mensaje
#9 Maxi
02/12/2004 - 20:34 | Informe spam
Hola, no soy Javier pero creo que no lo has interpretado :(

El lo que te indica es que si vas a usar SqlDinamico es preferible sacar la
consulta del SP y hacerlo en la aplicacion, ya que es mucho mejor y menos
riesgoso.

Cuando usas Sql-Dinamico dentro de un SP le estas sacando todas las ventajas
al mismo, entonces para que usar SP en esos casos? por eso la recomendacion
de Javier (y que comparto 100%) es que si queres usar consultas dinamicas
hacelo desde la aplicacion pero nunca uses Sql-Dinamico dentro de un SP, es
como ponerle candado de seguridad a una pierta pero dejarlo abierto ;)


Salu2
Maxi


"Jose" escribió en el mensaje
news:url$
Porque no revisas: http://www.hayes.ch/sql/sql_dinamico.html
Por otro lado, cual es el problema de en la estacion construir el


DELETE
==>> SqlStr="DELETE " + Tabla + " WHERE " + Condicion
==>> En vez de concatenar y ejecutar en SQL. La diferencia de seguridad es
importantisima. Si lo haces desde la estacion el usuario debe tener


permisos


Eso lo tengo claro y de hecho trabajaba asi hasta que leyendo hilos de
este
mismo foro me "convencieron" (el amigo Maxi, a la cabeza) de la
conveniencia
de tener un SP para todo inclusive para las acciones insert, delete,update
porque es mas eficiente, mas seguro, mas organizado, etc. etc. etc. etc.

Sin embargo ahora tu me sugieres que lo haga desde la estacion. Quien
los
entiende, amigos!!!. X-DDDD

Ya una vez alguien decia con razon en este foro algo como esto: "En SQL
server uno nunca tiene claro cual es la mejor ruta para hacer algo porque
parece que todas las soluciones son subjetivas y discutibles, lo cual no
pasa en otros ambientes como los lenguajes de programacion por ejemplo"


De todos modos, Gracias por la colaboracion


Respuesta Responder a este mensaje
#10 Battle Troll
02/12/2004 - 20:38 | Informe spam
como ponerle candado de seguridad a una pierta pero dejarlo abierto ;)



o bien: cerrar la puerta y el candado, pero dejar las llaves metidas en la
puerta del lado de adentro... y dejar la ventana abierta...

:-D

La mayoria de las preguntas que se nos pudieran ocurrir ya fueron
preguntadas y contestadas anteriormente.
Puedes buscar en los archivos de Usenet a través de Google:
http://groups-beta.google.com/group....es.access
http://groups-beta.google.com/group....sqlserver
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida