[firebase-br] Execute block não atualiza tabela
Hélio Oliveira
hpensador em gmail.com
Qui Jul 4 16:39:09 -03 2013
Grande Sandro boa tarde!
After serious thinking Sandro Souza wrote :
> 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.
>
Ok, realmente.
> 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.
Aqui foi um erro de digitação...rs
>
> 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.
Neste caso irá retornar (null) e caso isto ocorra, sendo que o
funcionário tem o valor 'S' no campo afastado ele deve ser atualizado.
>
> 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.
Por isto utilizo o FIRST 1, para que retorne apenas o último registro.
>
> 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
>
>
> ______________________________________________
> 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