Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-02

Conocer números de registros afectados por un procedimiento almacenado en Firebird 2.1.3

4 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Ismael L. Donis García

Como podr�a conocer los registros afectados por una transacci�n que ocurren en un procedimiento almacenado?

Si realizo:
rsce.SQL.Text := 'delete from tmp';
trace.StartTransaction;
rsce.ExecSQL;
intfilas := rsce.RowsAffected;

Me asigna correctamente los registros borrados den la variable intfilas

Pero si realizo:
rsce.SQL.Text := 'execute procedure delete_tmp';
trace.StartTransaction;
rsce.ExecSQL;
intfilas := rsce.RowsAffected;

No me asigna los registros eliminados por el procedimiento almacenado en la variable intfilas

Eso mismo sucede para la inserci�n y actualizaci�n de registros.

Como podr�a solucionar dicho problema?

GRACIAS a TO2S
=========
�� ISMAEL ��
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100217/4090e5b4/attachment.html>

Reply by email

Ismael L. Donis García

Rennvio el mensaje porque no se si lleg� a la lista o no.

Como podr�a conocer los registros afectados por una transacci�n que ocurren en un procedimiento almacenado?

Si realizo:
rsce.SQL.Text := 'delete from tmp';
trace.StartTransaction;
rsce.ExecSQL;
intfilas := rsce.RowsAffected;

Me asigna correctamente los registros borrados den la variable intfilas

Pero si realizo:
rsce.SQL.Text := 'execute procedure delete_tmp';
trace.StartTransaction;
rsce.ExecSQL;
intfilas := rsce.RowsAffected;

No me asigna los registros eliminados por el procedimiento almacenado en la variable intfilas

Eso mismo sucede para la inserci�n y actualizaci�n de registros.

Como podr�a solucionar dicho problema?

En Firebird el procedimiento almacenado est� construido de la siguiente forma para el caso de la inserci�n de registros, la cual no se si es la correcta:

begin
  /* Procedimiento para agregar las entidades */
  insert into eadatge (entidad, eadp, proceso) values (:vch_entidad, :dat_eadp, :int_proceso) returning row_count into :int_reg;
  suspend;
end

GRACIAS a TO2S
=========
�� ISMAEL ��
=========
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100218/d6961894/attachment.html>

Reply by email

JoshyFun
to Ismael L. Donis García

Hello Ismael,

Thursday, February 18, 2010, 2:49:08 PM, you wrote:

ILDG> En Firebird el procedimiento almacenado est� construido ILDG> de la siguiente forma para el caso de la inserci�n de registros, ILDG> la cual no se si es la correcta:
ILDG> begin
ILDG> /* Procedimiento para agregar las entidades */ ILDG> insert into eadatge (entidad, eadp, proceso) values ILDG> (:vch_entidad, :dat_eadp, :int_proceso) returning row_count into ILDG> :int_reg;
ILDG> suspend;
ILDG> end

Usando esta funci�n no puedes usar ExecSQL. Ser�a algo como:

SELECT int_reg as Insertados from delete_tmp(:vch_entidad,:dat_eadp,.....)

Y tendr�as que usar Open, ya que ExecSQL es para procedimientos que no "returning" nada.

Best regards, JoshyFun

Reply by email

Ismael L. Donis García
to JoshyFun

1 Mill�n de gracias por toda la explicaci�n.

Probar�.
=========
�� ISMAEL ��
=========

Earlier message 36 lines
----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Thursday, February 18, 2010 10:54 AM Subject: Re: [Lazarus-es]Fw: Conocer n�meros de registros afectados por un procedimiento almacenado en Firebird 2.1.3 Hello Ismael, Thursday, February 18, 2010, 2:49:08 PM, you wrote: ILDG> En Firebird el procedimiento almacenado est� construido ILDG> de la siguiente forma para el caso de la inserci�n de registros, ILDG> la cual no se si es la correcta: ILDG> begin ILDG> /* Procedimiento para agregar las entidades */ ILDG> insert into eadatge (entidad, eadp, proceso) values ILDG> (:vch_entidad, :dat_eadp, :int_proceso) returning row_count into ILDG> :int_reg; ILDG> suspend; ILDG> end Usando esta funci�n no puedes usar ExecSQL. Ser�a algo como: SELECT int_reg as Insertados from delete_tmp(:vch_entidad,:dat_eadp,.....) Y tendr�as que usar Open, ya que ExecSQL es para procedimientos que no "returning" nada. -- Best regards, JoshyFun

Reply by email