No sé como hacer un procedimiento transaccional
Hola gente! Estoy con una aplicación java que utiliza Una BBDD de oracle. En la aplicacion necesito hacer una serie de operaciones en la BBDD que sean transaccionales, es decir, si hay algún problema en alguna de las sentencias lanzadas que me retorne al estado inicial de las tablas. He creado un procedure con la extension PRAGMA AUTONOMOUS_TRANSACTION, pero siempre encuentra un error y me hace un rollback, aunque las operaciones en las tablas me las puede hacer. No sé que otra forma hacerlo, si me podéis echar una mano, os lo agradecerÃa muchÃsmo. Muchas gracias a todos
Las transacciones en cualquier motor se trabajan de la siguiente manera :
En el procedimiento almacenado comenzar con
BEGIN TRAN
Luego van las sentencias DML insert, update o delete
Manejas las excepciones en caso de error con
EXCEPTION
Si hay error haces un
ROLLBACK
Si todo OK
COMMIT
END
Esa es la forma de manejar las transacciones
Espero te sirva de guia.... en todo caso en la web hay bastante informacion ... busca transacciones en oracle
Suerte
En el procedimiento almacenado comenzar con
BEGIN TRAN
Luego van las sentencias DML insert, update o delete
Manejas las excepciones en caso de error con
EXCEPTION
Si hay error haces un
ROLLBACK
Si todo OK
COMMIT
END
Esa es la forma de manejar las transacciones
Espero te sirva de guia.... en todo caso en la web hay bastante informacion ... busca transacciones en oracle
Suerte
El problema no es la estructura del procedimiento, sino el funcionamiento del mismo, porque no se si el procedimiento al no poder hacer alguna transaccion te hace un rollback el solo, o lo tienes que hacer tu... Lo que yo he hecho ha sido simplemente un par de deletes y el fallo que me da es que se ha hecho un rollback por que se ha encontrado una transaccion activa, cuando si se pueden hacer las transacciones perfectamente. Y esto me salta siempre. Y para que no me salte el rollback tengo qeu hacer un commit dentro. Yo creo que en un procedmineto ya viene implicito un rollback si da algun fallo, y un commit si todo va bien...pero no estoy seguro.Ayuda plis....