Fórum select e update na mesma store procedure #59922
30/06/2008
0
Estou tentando fazer a seguinte store procedure:
CREATE PROCEDURE SOMA_AV_DESMPENHO (
cod_av integer)
returns (
soma integer)
as
begin
select
/* Realiza a soma de todos os campos*/
av_dsenp.comprometimento +
av_dsenp.interesse +
av_dsenp.rel_inter_pessoal +
av_dsenp.lideranca
from
av_dsenp
where
(av_dsenp.cod_av = :cod_av)
/* Guarda o resultado dentro da variavel SOMA*/
into :soma;
/* Atualiza o campo total com o valor da variavel SOMA*/
update
av_dsenp
set
av_dsenp.total = :soma
where
(av_dsenp.cod_av = :cod_av);
suspend;
end
e me aparece a seguinte mensagem:
´Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
lock conflict on no wait transaction.
deadlock.
update conflicts with concurrent update.´
Existe a possíbilidade de realizar um select somando os campos e logo em seguida atualizar o campo total com o resultado da variavel soma??
Mt obrigado pelas respostas
CREATE PROCEDURE SOMA_AV_DESMPENHO (
cod_av integer)
returns (
soma integer)
as
begin
select
/* Realiza a soma de todos os campos*/
av_dsenp.comprometimento +
av_dsenp.interesse +
av_dsenp.rel_inter_pessoal +
av_dsenp.lideranca
from
av_dsenp
where
(av_dsenp.cod_av = :cod_av)
/* Guarda o resultado dentro da variavel SOMA*/
into :soma;
/* Atualiza o campo total com o valor da variavel SOMA*/
update
av_dsenp
set
av_dsenp.total = :soma
where
(av_dsenp.cod_av = :cod_av);
suspend;
end
e me aparece a seguinte mensagem:
´Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
lock conflict on no wait transaction.
deadlock.
update conflicts with concurrent update.´
Existe a possíbilidade de realizar um select somando os campos e logo em seguida atualizar o campo total com o resultado da variavel soma??
Mt obrigado pelas respostas
Ricklorente
Curtir tópico
+ 0
Responder
Posts
30/06/2008
Emerson Nascimento
tente assim:
CREATE PROCEDURE SOMA_AV_DESMPENHO ( cod_av integer) returns ( soma integer) as begin /* Atualiza o campo total com a soma dos campos */ update av_dsenp set total = comprometimento + interesse + rel_inter_pessoal + lideranca where cod_av = :cod_av; /* Obtém o total calculado e guarda o resultado na variavel SOMA */ select total from av_dsenp where cod_av = :cod_av into :soma; suspend; end
Responder
Gostei + 0
30/06/2008
Ricklorente
emerson.en mt obrigado pela ajuda, deu certinho aqui desse jeito..
abraços
abraços
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)