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:
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!!!
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
Curtir tópico
+ 0
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.
Tente executar separadamente um e depois o outro.
Espero ter colaborado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)