[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