Commit numa SP
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
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
Curtidas 0
Respostas
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
execute procedure NOME_SP(parametros);
commit
Porque que não funciona?
No IBExpert, quando compila dá erro no commit.
sds.
Daniel
GOSTEI 0
Kotho
28/07/2005
Voce tentou executar o comando commit dentro da SP???
GOSTEI 0
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
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
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
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?
execute procedure NOME_SP(parametros);
commit
Eu teria que primeiro executar a procedure, limpar a query e executar o commit?
GOSTEI 0
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