PDA

Ver la Versión Completa : confirmar transaccion en un procedimiento almacenado


karocs
06-08-2004, 19:13:46
Saludos

agracederia infinitamente que me ayudaran con esto
resulta que tengo dos procedimientos almacenados en el primero consulto el valor de un campo, cuando tengo el valor llamo al segundo procedimiento almacenado y hago otra consulta con el valor que me retorno el primer procedimiento (pasado como parametor) y actualizo una tabla(en el segundo procedimiento).
el primer procedimiento lo ejecuto desde delphi pero supongo que la actualizacion queda en el limbo, porque cuando ejecuto el mismo procedimiento directamente desde interbase siempre me pide la confirmacion de la transaccion

entonces la pregunta concreta es que si debo confirmar la trasaccion en interbase 6.0 y si es el caso como podria hacerse.

Gracias...

jachguate
07-08-2004, 00:31:32
No entiendo muy bien la situación... pero lo que se decirte es que el registro no queda en el limbo, salvo que sea parte de una transacción distribuida para la que solo se ha hecho el primer paso del commit (en dos pasos.. :p)

Si te referis a cómo hacer commit desde delphi, dependerá de que componentes de conexión estas usando. Si estas usando BDE y no has tocado nada, no te preocupes.. ya se ha hecho un commit "implicito".

Si haces primero un database.StartTransaction, te hará falta un Database.Commit.

Si usas otros componentes, regularmente habrá un componente específico para manejar la transacción, a través del que podes hacer commit.

Si te referis a como confirmar la transacción desde isql, basta que escribas la sentencia commit;

En fin.. creo faltan datos para ser mas específico, pero ya con esto te orientaras bastante.

Hasta luego.

;)

karocs
09-08-2004, 16:04:20
Salusos

Gracias por responder... quiza no me supe explicar bien, la situacion concreta es que necesito consultar datos y de acuerdo al resultado de cada consulta actualizar en interbase directamente pero el procedimiento almacendo que maneja la actualizacion no me lo hace cuando ejecuto el procedimiento desde Delphi, pero cuando lo hago directamente desde el IBConsole de Interbase si.

en el primer procedimiento hago select * from procedimiento
y en el segundo solo Updates normales.

entonces no se que podria estar pasando.

la aplicacion que estoy manejando es en tres capas y utilizo DCOMConnection, sqlquery de dbexpres , DataSetProvider y ClientDataset

Gracias...

jachguate
09-08-2004, 18:49:24
Salusos
Saludos :D

el procedimiento almacendo que maneja la actualizacion no me lo hace cuando ejecuto el procedimiento desde Delphi, pero cuando lo hago directamente desde el IBConsole de Interbase si.
El comportamiento del SP no cambia de acuerdo al "origen" de la llamada. Te recomiendo revisar si este está recibiendo parámetros, que sean los que esperas cuando la llamada llega desde delphi. También que la transacción que engloba la llamada al procedimiento sea confirmada en algún punto (commit).

Hasta luego.

;)