Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Duda: Store Procedures para multiples Inserts

Estas en el tema de Duda: Store Procedures para multiples Inserts en el foro de Bases de Datos General en Foros del Web. Buen día, Me gustaría saber cúal es la forma óptima para insertar registros en diferentes tablas usando Store Procedures. Por ejemplo, tenemos una tabla "Pedidos" ...
  #1 (permalink)  
Antiguo 12/01/2010, 08:42
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Duda: Store Procedures para multiples Inserts

Buen día,
Me gustaría saber cúal es la forma óptima para insertar registros en diferentes tablas usando Store Procedures.

Por ejemplo, tenemos una tabla "Pedidos" y otra "Pedidos_Items". En la pantalla de mi aplicación tengo cargada toda la información tanto del pedido, como de todos los items que lo componen. Mi pregunta es como hacer la/s llamada/s a los Store Procedures:

¿Necesito llamar a un Store Procedure que haga el Insert en "Pedidos", y luego llamar n veces al Store Procedure que hace el Insert en "Pedido_Items"?

¿Existe alguna forma de pasarle toda la información a un sólo Store Procedure que haga todo junto? Tal vez XML o algo parecido, ya que mi idea seria disminuir los accesos a la BD.

Actualmente estoy trabajando con VB .Net y MySql 5.

Muchas gracias
  #2 (permalink)  
Antiguo 12/01/2010, 09:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda: Store Procedures para multiples Inserts

Mejor hazlo usando un MysqlCommand con una sentencia de inserción múltiple creada por código.
Es más sencillo, sólo requiere paciencia codificando. (lo digo por experiencia)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/01/2010, 09:00
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda: Store Procedures para multiples Inserts

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Mejor hazlo usando un MysqlCommand con una sentencia de inserción múltiple creada por código.
Es más sencillo, sólo requiere paciencia codificando. (lo digo por experiencia)
Muchas gracias por tu respuesta.

En principio mi idea era unificar el procesamiento en la base de datos, y además disminuir los accesos para agilizar los procesos; sin embargo, si es tan complicado supongo que seguire utilizando Transacciones e inserción múltiple.

Gracias por tu tiempo!
  #4 (permalink)  
Antiguo 13/01/2010, 09:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda: Store Procedures para multiples Inserts

El problema es que llamar N veces a un SP implica crear N veces procesos en la base, mientras que crear un insert múltiple por código requiere un sólo proceso.
No es muy eficiente.
A los SP es conveniente llamarlos para que cumplan un sólo proceso íntegro, no iteraciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/01/2010, 11:37
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda: Store Procedures para multiples Inserts

Sí, estoy de acuerdo. El Insert multimple es preferible a llamar N veces al SP.

Entonces las posibles soluciones serían:

1) Hacer un SP para hacer el alta del Header, y luego un Insert Multiple para los items del detalle.
Seguramente hacer un segundo SP para que en base a los items insertados, realice algunos otros cálculos y actualizaciones. (Ej. actualizaciones de Stock, Ctas. Ctes, etc.)

Pros: Mucho más sencillo. La capa del Negocio estaría en la aplicación y no en la DB.

2) Hacer un SP para hacer el alta de Header y todos sus items de detalle, pasandole toda la información en un formato XML o similar.

Pros: Un sólo acceso a la DB. Si se modifica el proceso, no hace falta actualizar la aplicación en todos los clientes.


Por lo que me decis, el método 2 es muy complicado, y debería hacerlo por el primero sin dudar. Por favor, confirmame si es así.

Gracias
  #6 (permalink)  
Antiguo 13/01/2010, 12:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda: Store Procedures para multiples Inserts

Cita:
Hacer un SP para hacer el alta de Header y todos sus items de detalle, pasandole toda la información en un formato XML o similar.
No solamente sería más complicado. MySQL no admite usar LOAD DATA INFILE dentro de un SP, al menos hasta ahora, con lo que la carga de los datos debería de todos modos hacerse en forma directa.
En cualquier caso, yo te recomendaría usar LOAD DATA OCAL, que funciona para cargas a servidores remotos (yo los uso), y no necesita XML. Solamente .CSV
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: multiples, procedures, store
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.