Boa tarde a todos!
Venho novamente recorrer à ajuda da comunidade.
O caso é o seguinte: sempre que insiro numa tabela um produto e seu
valor, preciso que o campo valor de revenda seja calculado
automaticamente com base no ICMS. Ou seja, crio uma trigger do tipo
AFTER que dispara uma função para calcular o valor. Porém tenho várias
tabelas que se comportam da mesma maneira: chamando essa função de
cálculo de revenda. Então na função criei uma variável que recebe
TG_TABLE_NAME pra saber qual tabela chamou a função. Só que agora não
sei utilizar essa variável junto com códigos SQL. Tentei de várias
formas e não deu certo, então comecei a pesquisar sobre EXECUTE, mas
não sei se é bem isso que terei que usar. Alguém pode ajudar?

Minha versão é 8.4. O código da função segue abaixo:

CREATE OR REPLACE FUNCTION revenda()
  RETURNS trigger AS $$

DECLARE
        tab varchar;--variável que armazena o nome da tabela que chamou a função
        icms integer; --icms do fornecedor
        valor float:=0; --valor de compra
        pf float:=0; --preço final(de revenda)
        local int:=17;--variável que recebe o icms de SC

BEGIN
        tab:=TG_TABLE_NAME;
        raise notice 'A tabela que disparou a trigger foi %', tab;

        SELECT dist.in_icms INTO icms FROM tab, dist WHERE dist.chis_iddist =
tab.chis_iddist;
        raise notice 'ICMS é %', icms;

        SELECT tab.fl_valor INTO valor FROM tab, dist WHERE dist.chis_iddist
= tab.chis_iddist;
        raise notice 'Valor é %', valor;

IF icms < local THEN
        pf:=valor+(valor*(icms/100));
        OLD.fl_icms=pf;
ELSIF icms = local THEN
        OLD.fl_icms = valor;
ELSE
        OLD.fl_icms = valor;
END IF;
RETURN NULL;
END;$$
  LANGUAGE 'plpgsql'

Grata,

-- 
Aline Renosto
Divisão de hardware e soluções integradas
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a