2014-10-21 9:22 GMT-02:00, Hélio Oliveira <[email protected]>:
> Bom dia Colegas!
>
> Ao tentar criar uma Function/Trigger dá o erro:
>
> ERRO:  erro de sintaxe em ou próximo a "else"
> LINE 18:       else
>
> e não consigo entender qual o motivo, abaixo a function.
>
> create or replace function apagar_aiu() returns trigger
> as $$
> declare
>   vlr_total numeric(12,2);
>   hist varchar(50);
> begin
>   if (TG = 'INSERT') then
>   begin
>     if (new.data_pagamento is not null) then
>     begin
>       if (new.data_pagamento <= new.data_vencimento) then
>       begin
>         if (new.data_pagamento <= new.validade_desconto) then
>           vlr_total = new.valor - new.desconto;
>         else
>           vlr_total = new.valor;
>         end if;
>       end   <<< --- Linha 18 :-@
>       else
>         vlr_total = new.valor + new.acrescimo;
>       end if;
>       hist = 'Vlr. ref. pagto. do título '||new.numero_titulo;
>       insert into movimento_caixa (data, descricao, valor, d_c, documento)
>       values (new.data_pagamento, :hist, :vlr_total, 'D',
> new.numero_titulo);
>     end if;
>   end
>   else
>   begin
>     if (TG = 'UPDATE') then
>     begin
>       if (new.data_pagamento <> old.data_pagamento) then
>       begin
>         vlr_total = new.valor + new.acrescimo - new.desconto;
>         update movimento_caixa mc
>         set mc.data = new.data_pagamento, mc.valor = :vlr_total
>         where mc.data = old.data_pagamento
>           and mc.documento = new.numero_titulo
>           and mc.d_c = 'D';
>       end if;
>       if (new.valor <> old.valor) then
>       begin
>         vlr_total = new.valor + new.acrescimo - new.desconto;
>         update movimento_caixa mc
>         set mc.valor = :vlr_total
>         where mc.data = old.data_pagamento
>           and mc.documento = old.numero_titulo
>           and mc.d_c = 'D';
>       end if;
>       if (new.numero_titulo <> old.numero_titulo) then
>       begin
>         update movimento_caixa mc
>         set mc.documento = new.numero_titulo
>         where mc.data = old.data_pagamento
>           and mc.documento = old.numero_titulo
>           and mc.d_c = 'D';
>       end if;
>     end if;
>   end
> end;
> $$ LANGUAGE plpgsql;
>
> --


Me parece faltar um ; em seus END.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a