[firebase-br] problema gravissimo com procedure + trigger - HELP
Murilo >> CPR Sistemas
murilo em cprinformatica.com.br
Qui Jan 3 12:36:59 -03 2008
Já achei o problema, era BIOS mesmo, em um outro local (não sei como ele é
chamado ainda nem o por que, isso estou vendo) chama a procedure
PROC_ATUALIZAITEMESTOQUE, enviando Null no campo. Foi um susto e tanto, mas
menos mal ser problema nosso.
Vlw ;D
Murilo >> CPR Sistemas escreveu:
> Foi feito no 1.5, mas foi feito o backup (no 1.5) / restore (no 2.0).
>
> Chico escreveu:
>> Esse seu banco foi criado nessa versão do FB?
>> Caso ele tenha sido criado em uma versão anterior, você fez
>> backup/restore para esta versão mais atual ?
>>
>> Murilo >> CPR Sistemas escreveu:
>>> Ahh sim esquecei, usamos FB 2.0.3
>>>
>>> Murilo >> CPR Sistemas escreveu:
>>>
>>>> tenho uma procedure que faz o seguinte update:
>>>>
>>>> update ITEMMOVIMENTO
>>>> set id_subnivel_localitem = :id_subnivel_localitem
>>>> where id_item = :id_item and
>>>> id_empresa = 1;
>>>>
>>>>
>>>>
>>>>
>>>> Na tabela ITEMMOVIMENTO tenho a seguinte trigger
>>>>
>>>> CREATE OR ALTER TRIGGER TR_ITEMMOVIMENTO FOR ITEMMOVIMENTO
>>>> ACTIVE AFTER UPDATE POSITION 0
>>>> as
>>>> begin
>>>> if (new.id_subnivel_localitem is not null)
>>>> execute procedure PROC_ATUALIZAITEMESTOQUE(new.id_item, new.id_empresa,
>>>> new.id_itemgrade, new.id_subnivel_localitem, (new.qt_movimento -
>>>> old.qt_movimento), 0);
>>>> end
>>>>
>>>>
>>>>
>>>> e na procedure PROC_ATUALIZAITEMESTOQUE eu tenho isso:
>>>>
>>>> CREATE OR ALTER PROCEDURE PROC_ATUALIZAITEMESTOQUE(
>>>> ID_ITEM INTEGER,
>>>> ID_EMPRESA INTEGER,
>>>> ID_GRADEITEM INTEGER,
>>>> ID_LOCALITEM INTEGER,
>>>> QT_FISICO DOUBLE PRECISION,
>>>> QT_RESERVADO DOUBLE PRECISION)
>>>> AS
>>>> begin
>>>>
>>>> if (ID_LOCALITEM is null)
>>>> exception EXP_TESTE 'Ahhhhhhhhhhhhhhhhh';
>>>> ....
>>>> end
>>>>
>>>>
>>>>
>>>> Acontece que o meu id_subnivel_localitem na tabela ITEMMOVIMENTO é not null, e
>>>> eu tenho certeza que não existe nenhum registro com null, mas por algum motivo
>>>> ele passa dentro do if "if (ID_LOCALITEM is null)" e dispara a exceção
>>>> EXP_TESTE, o que pode estar acontecendo??? pois o só está indo nulo neste campo,
>>>> e antes que falem, já recompilei todas as dependências, já restartei o banco,
>>>> até a máquina já reiniciei no desespero. A posição do campo também já mudei e
>>>> também já fiz verificação dos outros campos, ele é o único que está indo nulo
>>>> (detalhe é que é o mais importante.... o único que nunca pode ser nulo).
>>>>
>>>>
>>>> Agluém faz idéia do que seja? Problema de BIOS, bug,................. Já não sei
>>>> mais o que tentar, até mesmo já substituí a variável por um valor FIXO e
>>>> adivinha o que aconteceu.... NULOOOOOOOOOOooooooooooooooooooooooo
>>>>
>>>> :(
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para editar sua configuração na lista, use o endereço http://mail..firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista