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)
-   -   Usar ExecuteImmediate de IBDataBase (https://www.clubdelphi.com/foros/showthread.php?t=94259)

Punzo 23-10-2019 01:02:49

Usar ExecuteImmediate de IBDataBase
 
Buen día, tengo un problema al tratar de migrar BDE a IBX, esto es con los componentes Database e IBDatabase, tengo una líneas de código en donde el Database ejecuta Alter, Create y Drop hacia procedimientos almacenados, con un simple:

Código Delphi [-]
Database.Execute ('CREATE OR ALTER PROCEDURE... end');

He tratado de hacer básicamente lo mismo con el IBDatabase con el método ExecuteImmediate, pero me marca un error, me dice que no lo reconoce, estoy usando Delphi 2007 con Firebird 2.5, muchas gracias por su ayuda.

ecfisa 23-10-2019 05:30:25

Hola.

Podrías emplear el componente TIBScript, ejemplo de uso:
Código Delphi [-]
...
begin
  IBScript1.Database    := IBDatabase1;
  IBScript1.Transaction := IBTransaction1;
  IBScript1.Script.Add('SET TERM ^ ;');
  IBScript1.Script.Add('CREATE OR ALTER PROCEDURE FOO( AMOUNT INTEGER )');
  IBScript1.Script.Add('RETURNS( RESULT INTEGER )');
  IBScript1.Script.Add('AS');
  IBScript1.Script.Add('BEGIN');

  ... 

  IBScript1.Script.Add('  SUSPEND;')
  IBScript1.Script.Add('END^');
  IBScript1.Script.Add('SET TERM ; ^');
  IBScript1.ExecuteScript;
end;

Saludos :)

Punzo 23-10-2019 19:28:33

Cita:

Empezado por ecfisa (Mensaje 534056)
Hola.

Podrías emplear el componente TIBScript, ejemplo de uso:
Código Delphi [-]
...
begin
  IBScript1.Database    := IBDatabase1;
  IBScript1.Transaction := IBTransaction1;
  IBScript1.Script.Add('SET TERM ^ ;');
  IBScript1.Script.Add('CREATE OR ALTER PROCEDURE FOO( AMOUNT INTEGER )');
  IBScript1.Script.Add('RETURNS( RESULT INTEGER )');
  IBScript1.Script.Add('AS');
  IBScript1.Script.Add('BEGIN');

  ... 

  IBScript1.Script.Add('  SUSPEND;')
  IBScript1.Script.Add('END^');
  IBScript1.Script.Add('SET TERM ; ^');
  IBScript1.ExecuteScript;
end;

Saludos :)

Gracias, es la alternativa, si funciona.


La franja horaria es GMT +2. Ahora son las 06:11:29.

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