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