[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