Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Procedimientos y transacciones (https://www.clubdelphi.com/foros/showthread.php?t=71421)

Toni 17-12-2010 12:35:12

Procedimientos y transacciones
 
Hola,

Mi pregunta es si en Firebird 1.5 utilizando procedimientos almacenados que llaman a otros procedimientos almacenados, si se puede hacer que se ejecuten dentro de la misma transaccion.

Es decir si tengo:

Código Delphi [-]
PROCEDIMIENTO_A --> PROCEDIMIENTO_B --> PROCEDIMIENTO_C

Parece ser que cada procedimiento automaticamente genera una nueva transaccion, y esto no me permite ver los cambios que a realizado el procedimiento al que he llamado cuando todavia no he terminado el procedimiento inicial.

La cuestion es que para no tener un procedimiento muy largo lo dividi en varios, pero al crear nuevas transacciones cada uno no veo los cambios que realizan los otros.

Espero haberme explicado.

lucasarts_18 17-12-2010 14:39:33

Hola.

Solo una sugerencia, es factible que lo ejecutes desde la aplicación cliente, en el caso mio lo ejecuto desde delphi 1 o + SP y el asunto de los commit y rollback me funciona bien.

Saludos .-

guillotmarc 17-12-2010 16:25:31

Hola Toni.

Si ejecutas un procedimiento desde dentro de otro (con un execute procedure), se están ejecutando dentro de la misma transacción (Firebird no va a abrir una transacción distinta para el nuevo procedimiento).

Es más, Firebird no abre ninguna transacción, ni siquiera para el primer procedimiento que ejecutes.

La transacción la abren tus componentes Delphi (IBExpress, FibPlus, dbExpert, ...), esa transacción que defines desde Delphi es la única que va a existir, y se a a abrir y cerrar cuando tu lo especifiques en el programa Delphi.

Saludos.

Toni 17-12-2010 17:20:56

Muchas gracias Guillomarc,

Tu aclaracion me ha servido de mucho, pues el problema parecia ser esto y ademas yo tenia entendido que cada procedimiento generaba su propia transaccion.

Finalmente lo he resuelto y era un problema mio del codigo pero que sumado a mi mala interpretacion me liado mas todavia.

Gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 23:19:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi