[firebase-br] Trigger não chama Procedure...
Valdir Marcos
valdir.marcos em ig.com.br
Sáb Ago 2 18:01:02 -03 2008
Provavelmente, está acontecendo alguma exceção...
Depure sua aplicação fazendo testes com Insert, Update e Delete
isoladamente para ver o comportamento da trigger.
Sua trigger com certeza não funcionará corretamente no 2.1, então
sugiro reconstruí-la identificando se o evento é Insert, Update e
Delete e usando New ou Old conforme o caso.
Outra boa atitude seria mudar o número do Position para 10 e fazê-lo
crescer de 10 e 10, sobrando assim números para futuras emergências.
Um abraço,
Valdir
2008/8/1, VBSHAR <sharmaq em terra.com.br>:
> Bom dia
>
>
> pessoal, eu tenho uma base FB 1.5 e nela uma procedure que serva para
> atualizar o valor pago de uma conta, esta procedure é chamada por uma
> trigger numa tabela de cheques recebidos. Seguem as mesmas:
>
> A procedure:
> ===================================================
> CREATE PROCEDURE ATUALIZA_SALDO_PAGAR (
> COD_LANCTOS INTEGER)
> AS
> DECLARE VARIABLE TOTAL_GERAL NUMERIC(12,2);
> DECLARE VARIABLE TOTAL_CHEQUE NUMERIC(12,2);
> DECLARE VARIABLE TOTAL_CARTAO NUMERIC(12,2);
> DECLARE VARIABLE TOTAL_BOLETOS NUMERIC(12,2);
> begin
> /*TOTALIZA O JA PAGO EM CHEQUES*/
> SELECT COALESCE(SUM(VALOR),0)
> FROM contas_cheques
> WHERE COD_LANCTO=:COD_LANCTOS and contas_cheques.COMPENSADO='S'
> INTO :TOTAL_CHEQUE;
> /*TOTALIZA O JA PAGO EM CARTOES*/
> SELECT COALESCE(SUM(VALOR),0)
> FROM contas_cartoes
> WHERE COD_LANCTO=:COD_LANCTOS and contas_cartoes.pago=-1
> INTO :TOTAL_CARTAO;
> /*TOTALIZA O JA PAGO EM BOLETOS*/
> SELECT COALESCE(SUM(VALOR),0)
> FROM contas_boletos
> WHERE COD_LANCTO=:COD_LANCTOS and contas_boletos.pago=-1
> INTO :TOTAL_BOLETOS;
> /*UNE TODAS AS VARIAVEIS NUM SO*/
> TOTAL_GERAL=TOTAL_CHEQUE + TOTAL_CARTAO;
>
> UPDATE contas_lancamentos
> SET CONTAS_LANCAMENTOS.valor_pago=:TOTAL_GERAL
> WHERE CONTAS_LANCAMENTOS.CODIGO=:COD_LANCTOS;
>
> /*SE O VALOR PAGO FOR IGUAL OU MAIOR QUE O VALOR DEVIDO POE A CONTA COMO
> PAGA*/
>
> UPDATE contas_lancamentos
> SET CONTAS_LANCAMENTOS.pago=-1
> WHERE CONTAS_LANCAMENTOS.CODIGO=:COD_LANCTOS AND
> CONTAS_LANCAMENTOS.VALOR_PAGAR<=contas_lancamentos.valor_pago;
> suspend;
> End
> ===================================================
> A triger é:
> ===================================================
> CREATE TRIGGER CONTAS_CHEQUES_AIUD0 FOR CONTAS_CHEQUES
> ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
> AS
> begin
> execute procedure ATUALIZA_SALDO_PAGAR NEW.CODIGO;
> end
> ===================================================
>
> Bom, a procedure funciona se eu chamar ela manualmente pelo IBExpert, mas
> quando eu altero a tabela cheques a trigger parece não disparar a procedure.
> Não dá mensagem de erro nenhum, só não funciona....
>
> O que pode ser?
>
>
>
>
>
> ______________________________________________
> 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