[firebase-br] Execute block não atualiza tabela
Hélio Oliveira
hpensador em gmail.com
Qui Jul 4 16:50:00 -03 2013
Problema resolvido em partes...
Agora após eu retirar o SUSPEND - que foi bem observado pelo amigo
Sandro, a atualização é executada, porém são dados 2 avisos:
unknown ISC error 0.
unknown ISC error 0.
O que pode ser isto?
Hélio Oliveira used his keyboard to write :
> 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
>
>
>
>
> ______________________________________________
> 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