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

#11 Maxi
02/12/2004 - 20:45 | Informe spam
jajaja, y mas o menos ;)


Salu2
Maxi


"Battle Troll" escribió en el mensaje
news:
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
#12 Battle Troll
02/12/2004 - 21:03 | Informe spam
Por cierto maestro, ¿en este caso que seria mejor?

¿La solucion que se me ocurrio - un monton de SP's en el servidor para
borrar diferentes filas, una por tabla, y se mandan llamar desde un SP
maestro que es al que llama la aplicacion?

¿O mandarle directamente la instruccion SQL desde, digamos, visual basic
al sql server?
Porque a primera vista pensaria que el SP especifico para esa tabla seria
mas rapido que en lo que sql server analiza, interpreta y compila la
consulta... pero hay muchos pasos intermedios antes de llegar a ese SP, y
ahi la ganancia quizas se pierda...

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
#13 Maxi
02/12/2004 - 21:18 | Informe spam
Hola, te cuento que es lo que hago yo ;) (es solo una tecnica nomas)

Supongamos este ejemplo (Cabecera - Detalle)

Aca armo asi la cosa

cabecera_I (insert)
cabecera_u (update)
cabecera_d (Delete)

Detalle_i
Detalle_u
Detalle_d

Bien, en la aplicacion entonces los llamo en mi capa de accedo a datos (DAL
Data Access Layer) segun corresponda y dentro de una transaccion.

Con esto logro varias cosas

1) La aplicacion es bien abstracta porque solo debe llamar a los SP del
motor sin importar que hacen estos
2) Seguridad
3) Mantenimiento en el codigo (si mañana pongo un campo nuevo, solo debo ver
los SP y nada mas)

Como veras nunca uso Sql desde las aplicaciones, es mas, ni los querys
dinamicos los hago asi, sino que uso un SP patron (pedidos_tl_o o
pedidos_tl_a) donde basicamente que hace:

1) tiene todos los campos de la BDD a consultar
2) Usa un isnull(@var,campo) o un like para saber como buscar (si queres
paso el codigo de ejemplo para que lo veas)
3) Uno es A y el otro es O porque puede ser (And u OR) entre todos los
campos. Luego si hay algo muy especifico genero el SP en cuestion, pero con
el patron que te comente te aseguro que resolves el 99% de los casos.

Al usuario le aparece una pantalla que carga controles en tiempo de
ejecucion, estos controles no son mas que TextBox y Label que representan a
los campos de la BDD. El usuario llena los que quiere y son los param que le
paso el SP, todo esto con Recordset cuando usaba vb6 y ahora que estoy
migrando a .net lo hago con Dataset.

No se si te hice un lio enorme o te aclare algunas ideas, pero bue...





Salu2
Maxi


"Battle Troll" escribió en el mensaje
news:
Por cierto maestro, ¿en este caso que seria mejor?

¿La solucion que se me ocurrio - un monton de SP's en el servidor para
borrar diferentes filas, una por tabla, y se mandan llamar desde un SP
maestro que es al que llama la aplicacion?

¿O mandarle directamente la instruccion SQL desde, digamos, visual basic
al sql server?
Porque a primera vista pensaria que el SP especifico para esa tabla seria
mas rapido que en lo que sql server analiza, interpreta y compila la
consulta... pero hay muchos pasos intermedios antes de llegar a ese SP, y
ahi la ganancia quizas se pierda...

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
#14 JOSE DAVID GALVIZ M
02/12/2004 - 23:12 | Informe spam
Ché Maxi, seguro que quiero ver el código de ejemplo del SP PATRON :)




Ingeniero JOSE DAVID GALVIZ MUÑOZ
Microsoft Certified Application Developer
Desarrollador Cinco Estrellas 4

"Maxi" escribió en el mensaje
news:
Hola, te cuento que es lo que hago yo ;) (es solo una tecnica nomas)

Supongamos este ejemplo (Cabecera - Detalle)

Aca armo asi la cosa

cabecera_I (insert)
cabecera_u (update)
cabecera_d (Delete)

Detalle_i
Detalle_u
Detalle_d

Bien, en la aplicacion entonces los llamo en mi capa de accedo a datos
(DAL Data Access Layer) segun corresponda y dentro de una transaccion.

Con esto logro varias cosas

1) La aplicacion es bien abstracta porque solo debe llamar a los SP del
motor sin importar que hacen estos
2) Seguridad
3) Mantenimiento en el codigo (si mañana pongo un campo nuevo, solo debo
ver los SP y nada mas)

Como veras nunca uso Sql desde las aplicaciones, es mas, ni los querys
dinamicos los hago asi, sino que uso un SP patron (pedidos_tl_o o
pedidos_tl_a) donde basicamente que hace:

1) tiene todos los campos de la BDD a consultar
2) Usa un isnull(@var,campo) o un like para saber como buscar (si queres
paso el codigo de ejemplo para que lo veas)
3) Uno es A y el otro es O porque puede ser (And u OR) entre todos los
campos. Luego si hay algo muy especifico genero el SP en cuestion, pero
con el patron que te comente te aseguro que resolves el 99% de los casos.

Al usuario le aparece una pantalla que carga controles en tiempo de
ejecucion, estos controles no son mas que TextBox y Label que representan
a los campos de la BDD. El usuario llena los que quiere y son los param
que le paso el SP, todo esto con Recordset cuando usaba vb6 y ahora que
estoy migrando a .net lo hago con Dataset.

No se si te hice un lio enorme o te aclare algunas ideas, pero bue...





Salu2
Maxi


"Battle Troll" escribió en el mensaje
news:
Por cierto maestro, ¿en este caso que seria mejor?

¿La solucion que se me ocurrio - un monton de SP's en el servidor para
borrar diferentes filas, una por tabla, y se mandan llamar desde un SP
maestro que es al que llama la aplicacion?

¿O mandarle directamente la instruccion SQL desde, digamos, visual basic
al sql server?
Porque a primera vista pensaria que el SP especifico para esa tabla seria
mas rapido que en lo que sql server analiza, interpreta y compila la
consulta... pero hay muchos pasos intermedios antes de llegar a ese SP, y
ahi la ganancia quizas se pierda...

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
#15 Javier Loria
03/12/2004 - 00:00 | Informe spam
Hola:
La diferencia en desempeno entre procedimientos almacenados y consultas
"directas" en SQL 2000 es casi nula, la razon es que SQL 2000, de forma
automatica, parametriza la consulta y se la sentencia siguiente es igual
excepto en el parametro, reutiliza el plan de acceso.
Siempre quedan algunas pequenas mejoras en el desempeno, pero estan mas
relacionadas con el envio de las sentencias y lo largo de lo mismas.
En general tiene sentido un monton de procedimientos almacenados
pequenos o triviales que le dan mantenimiento a las Tablas, ahora con Visual
Studio es muy facil autogenerarlos.
Uno de los principales problemas de no usar SQL es en mi concepto la
mezcla de codigo entre VB/C#/Java/Pascal - SQL. Esto es cuando en la
aplicacion se construyen un monton de sentencias en SQL que se envian al
servidor (parecida a la que escribi, pero compleja), que luego cuando hay
problemas o hay que darle mantenimiento a las tablas, requiere cambialo
tambien en la aplicacion y es dificil saber donde esta el codigo. Muchas
veces en este foro los desarrolladores ponen como primera condicion: ... y
no puedo cambiar las tablas, precisamente por esta razon.
Si tenemos un desarrollo basado en Procedimientos Almacenados para dar
mantenimiento a las tablas, se hace relativamente sencillo cambiar el
esquema de las tablas sin ncesidad de "bucear" codigo en otro lenguaje.
Desgraciadamente requiere trabajo.
Una alternativa es usar un patron de diseno llamado: "The Phrasebook
Design Pattern", este patron permite escribir clases que mantengan de forma
independiente el codigo de SQL en un archivo independiente, que luego se
pueda dar mantenimiento sin necesidad de buscar el codigo en la aplicacion.
Esto soluciona algunos de los problemas que solucionan los procedimientos.
La plataforma .NET (Visual Studio) tambien hace bien sencillo esto al
permitir las Propiedades Dinamicas, que permiten configurar visualmente un
SQLCommand con el Texto en el archivo de configuracion.


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Battle Troll" wrote in message
news:
Por cierto maestro, ¿en este caso que seria mejor?

¿La solucion que se me ocurrio - un monton de SP's en el servidor para
borrar diferentes filas, una por tabla, y se mandan llamar desde un SP
maestro que es al que llama la aplicacion?

¿O mandarle directamente la instruccion SQL desde, digamos, visual basic
al sql server?
Porque a primera vista pensaria que el SP especifico para esa tabla seria
mas rapido que en lo que sql server analiza, interpreta y compila la
consulta... pero hay muchos pasos intermedios antes de llegar a ese SP, y
ahi la ganancia quizas se pierda...

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