Fórum Executar script SQL - Delphi e Firebird #410807

20/12/2011

0

galera...criei um procedimento para executar script firebird pelo delphi, abaixo código:

procedure ExecutarScript(Script: TStrings);
var
   IBTransaction: TIBTransaction;
   IBDatabase: TIBDatabase;
   IBScript: TIBScript;
begin
   try
      IBTransaction := TIBTransaction.Create(nil);
      IBDatabase := TIBDatabase.Create(nil);
      IBScript := TIBScript.Create(nil);
      IBTransaction.DefaultDatabase := IBDatabase;

      IBDatabase.DefaultTransaction := IBTransaction;
      IBDatabase.DatabaseName := SqlConnectionConexao.Params.Values[Database];
      IBDatabase.Params.Add(USER_NAME=SYSDBA);
      IBDatabase.Params.Add(PASSWORD=masterkey);
      IBDatabase.LoginPrompt := False;
      IBDatabase.Connected := true;
      IBScript.Transaction := IBTransaction;
      IBTransaction.Active := true;
      IBScript.Database := IBDatabase;
      IBScript.Terminator := ;;
      IBScript.Script := Script;
      IBScript.AutoDDL := true;
      IBScript.Transaction.Commit;
      IBScript.ExecuteScript;
   finally
      FreeAndNil(IBScript);
      FreeAndNil(IBTransaction);
      FreeAndNil(IBDatabase);
   end;
end;


daí envio um stringlist para o ibscript e blz
funciona perfeitamente, exceto quando por exemplo:

insert into cadcidades (id_cidade, descricao) values (31822, SAO PAULO);
commit work;
insert into cadclientes (id_cliente, razao_social, di_cidade) values (1, JOSE, 31822);
commit work;

reparando o SQL acima, sabemos que o segundo insert precisa que o primeiro esteja comitado.
mesmo com o commit work não consegui executar o segundo insert, da certo somente o primeiro insert.
não sei se todos as propriedades do IBDatabase, IBTrasaction e IBScript estão ok.

Alguém ja conseguiu fazer algo assim

Aguardo!!!
Huelbert Oliveira

Huelbert Oliveira

Responder

Posts

27/12/2011

Wilson Junior

O Execute Script executa apenas um script por vez, por isto o primeiro é executado e os outros não.
Tente executar separadamente um e depois o outro.

Espero ter colaborado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar