Commit manual OWB
Commit manual OWB penyo 7 Septiembre, 2010 - 14:11Buenas tardes,
Os comento el problema que me ha surgido, en los flujos, cuando lanza algun mapeo o un procedimiento, nos surgió la duda de como realizar un rollback de los datos. Por otros foros descubrimos que lo suyo es configurar el mapeo, como commit manual, y al final del flujo si todo ha ido correcto, hacer un rollback o un commit. Pinta sencillo, hemos configurado todo así, pero parece ser que aun configurando la correspondencia como manual, hace un commit igualmente. ¿Sabeis algo al respecto de porque puede estar pasando esto?
Gracias.
Os cuento más
Subido por penyo el 27 Septiembre, 2010 - 20:07
Os cuento más detenidamente... tengo un flujo que carga dos tablas. Tengo en ambas tablas configurado el commit manual. Y se me pueden dar los siguientes casos:
- Las dos tablas cargan mal: En cuanto una carga mal, hace rollback y pasa a la siguiente. Tambien carga mal, hace rollback y termina. Hasta aqui perfecto.
- Una tabla carga bien y la otra mal: Una tabla carga mal, por lo que hace el rollback y pasa a la siguiente. La siguiente carga bien, entonces hace commit de esta (a pesar de tenerlo configurado como manual).
Mi problema está en que no me interesa que haga commit hasta el final, en cuanto una tabla falle, quiero que haga un rollback de todo, y lo que hace es hacer rollback unicamente de la tabla que ha fallado.
Supongo que utilizas el
Subido por Carlos el 27 Septiembre, 2010 - 22:23
En respuesta a Os cuento más por penyo
Supongo que utilizas el operador 'post mapping' para hacer el commit o rollback final, no? En teoría si lo configuras como manual, y lo controlas con este operador debería actuar sobre todo lo anterior. Si ya lo haces así puede que necesitemos que intervenga alguien que se haya peleado más con estas opciones ;)
Te enlazo también sección Embedding Commit Logic into the Mapping del Manual de Usuario de OWB 10.2, por si no lo has consultado aún, siguiendo los enlaces de las diferentes opciones puede que encuentres lo que te está pasando..
Buenos días! Eso es lo que
Subido por penyo el 28 Septiembre, 2010 - 10:39
Buenos días! Eso es lo que tengo hecho, pero tengo el OWB 11.2 y no se porque no me lo realiza bien, he leido en el link que, se puede hacer con un SQL*PLUS, lo he intentado de diversas maneras y se queda bloqueado en el lanzamiento del SQL*PLUS. Lo he puesto tal cual viene en el link de oracle:
begin
carga_fallo.main(status);
if status!='OK'
then rollback
else carga_fallo2.main(status);
if status!='OK' then rollback;
else commit;
end if;
end if;
end;
La sintaxis es erronea con total seguridad. ¿Sabéis algo al respecto?
Gracias por la ayuda y un saludo.
No sé si entiendo bien la
Subido por Carlos el 28 Septiembre, 2010 - 14:03
En respuesta a Buenos días! Eso es lo que por penyo
No sé si entiendo bien la lógica, pero creo que te falta el punto y coma después del rollback, y los paréntesis en la condición del IF siempre son acosejables. Prueba con esto:
Hola! Si, gracias Carlos, lo
Subido por penyo el 28 Septiembre, 2010 - 15:47
En respuesta a No sé si entiendo bien la por Carlos
Hola!
Si, gracias Carlos, lo había modificado, tal y como me lo has puesto tu ahora. Pero nada, no hay manera, creo que no interpreta bien los mapeos, no estoy seguro de que la sentencia sea "mapeo.main" y no he encontrado nada al respecto por internet.