Commit numa SP

Firebird

28/07/2005

Olá

Criei uma SP para inclusão, exclusão e alteração. Como eu posso fazer para rodar esta SP já dando um commit direto?

sds.
Daniel


Dpbraz

Dpbraz

Curtidas 0

Respostas

Dpbraz

Dpbraz

28/07/2005

No IBConsole, se eu executar a procedure e em seguida der um commit, funciona. Já no IBExpert e nos componentes IBX não.

execute procedure NOME_SP(parametros);
commit

Porque que não funciona?

No IBExpert, quando compila dá erro no commit.

sds.
Daniel


GOSTEI 0
Kotho

Kotho

28/07/2005

Voce tentou executar o comando commit dentro da SP???


GOSTEI 0
Dpbraz

Dpbraz

28/07/2005

Sim. Abaixo segue a procedure

begin
if (operacao=1) then
delete from parque where cd_parque = :cd_parque;

if (operacao=2) then
insert into parque (cd_parque,nm_parque) values (:cd_parque,:nm_parque);

if (operacao=3) then
update parque set cd_parque=:cd_parque, nm_parque=:nm_parque;
suspend;
end

em qualquer lugar que eu coloco o COMMIT dá erro na compilação


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/07/2005

Não se dá COMMIT de dentro de uma SP, vc vincula-a a uma transação como qualquer outra query e ao terminar de executá-la comitar a transação.


GOSTEI 0
Dpbraz

Dpbraz

28/07/2005

Então não têm como eu fazer dentro de um mesmo IBQuery o comando abaixo?

execute procedure NOME_SP(parametros);
commit

Eu teria que primeiro executar a procedure, limpar a query e executar o commit?


GOSTEI 0
Gandalf.nho

Gandalf.nho

28/07/2005

Não, vc vincula seu componente de acesso (como é uma procedure executável vc irá usar IBStoredProc e não IBQuery) a um IBTransaction, como vc faria com qualquer IBDataset ou IBQuery, executa sua procedure e depois é só dar o Commit no IBTransaction.


GOSTEI 0
POSTAR