[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