[firebase-br] Update na mesma tabela do For/Select/Into

Sandro Souza escovadordebits em gmail.com
Qua Maio 27 14:52:53 -03 2009


Bom dia/tarde BVRenato.

Grande BVRenato, provavelmente é o update sendo efetuado na mesma tabela e
no mesmo registro que está sendo acessado pelo SELECT.

Faça um teste, mova o UPDATE para fora do laço, ou seja:

Onde há:

for select campo1,campo2,...
  from Itens_Pedido
  where Pedido = pPedido
  into :c1,c2,...
do
begin
  ... <= algumas operações
  >> Nesse momento dá o erro
  update Itens_pedido t set t.campo10 = c1*c2 *qualquer coisa
  where t.nrpedido = pPedido
end

Tente:

for select campo1,campo2,...
  from Itens_Pedido
  where Pedido = pPedido
  into :c1,c2,...
do
begin
  ... <= algumas operações
end

update Itens_pedido set
  campo10 = campo1*campo2 *qualquer coisa
where
  Pedido = pPedido;

Espero que funcione.

Também verifique se existe alguma trigger antes ou depois do update nessa
tabela.

Espero ter ajudado mais que atrapalhado. :D

2009/5/27 bvrenato <bvrenato em click21.com.br>

>
> Boa tarde a todos!
>
> Estou precisando atualizar alguns campos de todos os registros de uma
> tabela de
> pedidos via procedure, e está ocorrendo o seguinte erro: Too many
> concurrent
> executions of the same request.
>
> Uso o FB 2.1 e estou fazendo o seguinte:
>
>
> begin
>   for select campo1,
>                 campo2,
>                 ...
>   from Itens_Pedido
>   where Pedido = pPedido
>   into :c1,
>          c2,
>          ...
>   do
>   begin
>          ... <= algumas operações
>
>         >> Nesse momento dá o erro
>         update Itens_pedido t set t.campo10 = c1*c2 *qualquer coisa
>         where t.nrpedido = pPedido
>
>
>
>   end
>
> end
>
> Isso significa que não posso fazer o update na mesma tabela do
> for/select/into?
>
> Alguém poderia dar uma dica de como fazer ?
>
> Obrigado!
>
> Renato
>
>
>
> ___________________________________________________________________________________
> Para fazer uma ligação DDD pra perto ou pra longe, faz um 21. A Embratel
> tem
> tarifas muito baratas esperando por você. Aproveite!
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista