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

Rollback en procedimientos almacenados PLSQL

Estas en el tema de Rollback en procedimientos almacenados PLSQL en el foro de Bases de Datos General en Foros del Web. Hola, debo de crear un procedimiento almacenado en Oracle 9i, y tengo una duda acerca del rollback y commit. La cuestion es que son dos ...
  #1 (permalink)  
Antiguo 22/02/2005, 06:50
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Rollback en procedimientos almacenados PLSQL

Hola, debo de crear un procedimiento almacenado en Oracle 9i, y tengo una duda acerca del rollback y commit.

La cuestion es que son dos procedimientos almacenados que se deben ejecutar secuencialmente y si algo falla debe de hacer un rollback de todo.

Habia pensado en crear un procedimiento que llame a los dos procedimientos, y en cada procedimiento llamado hacer un raise_exception para que la excepcion suba al procedimiento que llama.

Entoces en procedimiento principal tendria 3 sentencias: Una llamada a cada procedimiento y un commit final. Y luego recojere la excepciones enviadas por los procedimientos llamados. en caso que hubiera un fallo en la excepcion grabaria en el tabla de errores un registro y haria un rollback :)

Mi duda es si el rollback lo hara correctamente o si falla el segundo procedimiento lo que hubiera echo el primero se kedaria.

Los procedimientos llamados no hacen ninguna commit.

Si no se puede hacer asi, juntaria los dos procedimiento en uno solo ya que asi si se puede hacer.

saludos :)
  #2 (permalink)  
Antiguo 28/02/2005, 05:52
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Ninguna idea????

saludos :)
  #3 (permalink)  
Antiguo 10/08/2005, 06:19
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Se me paso responderme, pues creandolos como yo pensaba hace rollback perfectamente

saludos :)
  #4 (permalink)  
Antiguo 10/08/2005, 12:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
La desventaja que tiene esa forma es que si relanzas excepciones no vas a saber cual fue el procedimiento que la lanzo, solo que existio un error en alguno de los dos.
Ej: Si los dos procedures tienen un SELECT INTO y en alguno de ellos la consulta te devolvio mas de un registro, al principal le va a llegar TOO_MANY_ROWS exception, pero no vas a saber donde se lanzo, y el debug se te va a hacer mas trabajoso.(Imaginate si tenes varios SELECT INTO)
Ademas, si despues quieres reutilizar estos procedimentos para otra cosa, te va a resultar mas facil si no dependen del programa principal.
Cuanta mas informacion de errores puedas obtener de los procedimientos, mas sencillo de corregir y dara al usuario mas datos acerca de porque sucedio el error. Es decir, es mejor que cada procedimiento se implemente como una unidad independiente, tenga su clausula exception, haga sus propios rollbacks e inserte en la tabla los errores que alli surgieron, y no que lo haga el procedimento principal.

Saludos.
  #5 (permalink)  
Antiguo 22/08/2005, 05:02
 
Fecha de Ingreso: septiembre-2004
Mensajes: 191
Antigüedad: 19 años, 8 meses
Puntos: 1
Por eso no hay problema, ya q en realizad aunk sean dos procedimientos, es como si fuera uno solo, pero al realizarlo dos personas distintas, se ha separado en dos procedimientos.

Y si hubiera algun error no hay problema porq antes de lanzar la excepcion al procedure que la llamo se mete una linea en la tabla de errores :)

saludos :)
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 19:20.