[firebase-br] Execute block não atualiza tabela

Sandro Souza escovadordebits em gmail.com
Qui Jul 4 16:32:46 -03 2013


Bom dia/tarde/noite Pensador.

Nobre amigo, posso estar enganado, mas só devemos usar o SUSPEND quando 
a stored procedure deve retornar mais um registro/linha.

Se não for o caso, remova-o.

Outro detalhe que não deve ter nada a ver com o problema, pode colocar o 
nome MATRICULA na variável MATICULA que não tem problema, pois nos 
comandos SQLs, os dois-pontos no início do nome é que deixam claro 
quando é um parâmetro/variável ou quando é um campo/coluna.

Existem também 2 (duas) situações em que não ocorre a atualização da 
tabela de funcionários:

1 - A tabela HISTORICO não tem qualquer registro com as matrículas da 
tabela FUNCIONARIO.

2 - A tabela HISTORICO tem um ou mais registro com as matrículas da 
tabela FUNCIONARIO, mas com o valor diferente de 'R' na coluna AFA_RET.

Espero ter ajudado mais que atrapalhado. :D

Em 04-07-2013 16:00, Firebird escreveu:
> Boa tarde Colegas!
>
> No código abaixo necessito atualizar a tabela de funcionários, porém 
> quando executo o bloco de código o mesmo não faz a atualização. O que 
> posso estar fazendo errado.
>
> execute block
> as
> declare variable maticula integer;
> declare variable ar       varchar(1);
> begin
>  for select x.codigo
>      from funcionario x
>      where x.afastado = 'S'
>      order by x.codigo
>  into :maticula do
>  begin
>    ar = null;
>    select first 1 h.afa_ret
>    from historico h
>    where h.matricula = :maticula
>    order by h.data desc into :ar;
>    if ((:ar = 'R') or (:ar is null))  then
>      update funcionario set afastado = 'N' where codigo = :maticula;
>    suspend;
>  end
> end
>
> [ ]'s,
>
> Hélio Oliveira
>
>
>
>
> ______________________________________________
> 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