Estou tentando compilar essas trigger e function esta dando erro!
o que pode esta errado:
CREATE FUNCTION prc_valida_estoque(integer, integer) RETURNS INTEGER AS $$
DECLARE
PCOD_MEDIC ALIAS $1;
PQTDE_MEDIC ALIAS FOR $2;
vestoque INTEGER;
BEGIN
select into vestoque estoque
from medicamentos
where cd_medicamento = :pcod_medic;
-- PL/pgsql nao tem excecoes, entao faremos a funcao retornar -1
-- em caso de falha e 1 em caso de sucesso
if (:pqtde_medic > :vestoque) then
RETURN -1;
RETURN 1;
END;
$$ LANGUAGE plpgsql;
Triggers tem que ser implementados como funcoes especiais sem argumentos
que retornam o tipo TRIGGER.
http://www.postgresql.org/docs/8.2/static/plpgsql-trigger.html
CREATE FUNCTION deletar_item_ordem_saida() RETURNS TRIGGER AS $$
BEGIN
-- Tens certeza que a WHERE clause ta' certa?
UPDATE medicamentos SET estoque = estoque + OLD.qtde_medic
WHERE cd_medicamento = OLD.qtde_medic;
-- Retornamos NULL por que e' um AFTER trigger
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER deletar_item_ordem_saida
AFTER DELETE ON item_ordem_saida
FOR EACH ROW EXECUTE PROCEDURE deletar_item_ordem_saida();
Assunto: Re: [pgbr-geral] Trigger e Function no PostgreSql
On Fri, Jul 13, 2007 at 11:44:28PM -0300, Edinho - Analista wrote:
> Gelera!
>
> Estou querendo migrar o sistema que tenho em firebird para Postgresql e estou
> enfrentado dificuldades com trigger e function no postgresql ,ja que no post
> é diferente .Preciso mudas estas abaixo e não estou conseguindo existe pouca
> referencia na net sobre o assunto.
A documentacao do PL/pgsql te ajudaria bastante. Lembrando que podes usar
outras linguagens alem do PL/pgsql, como PL/Python, PL/PHP, PL/Perl,
PL/Java etc. Vou converter uns dois para te ajudar, mas tens que ler a
documentacao para terminar o servico.
http://www.postgresql.org/docs/8.2/static/plpgsql.html
CREATE FUNCTION prc_valida_estoque(integer, integer) RETURNS INTEGER AS $$
DECLARE
PCOD_MEDIC ALIAS $1;
PQTDE_MEDIC ALIAS FOR $2;
vestoque INTEGER;
BEGIN
select into vestoque estoque
from medicamentos
where cd_medicamento = :pcod_medic;
-- PL/pgsql nao tem excecoes, entao faremos a funcao retornar -1
-- em caso de falha e 1 em caso de sucesso
if (:pqtde_medic > :vestoque) then
RETURN -1;
RETURN 1;
END;
$$ LANGUAGE plpgsql;
Triggers tem que ser implementados como funcoes especiais sem argumentos
que retornam o tipo TRIGGER.
http://www.postgresql.org/docs/8.2/static/plpgsql-trigger.html
CREATE FUNCTION deletar_item_ordem_saida() RETURNS TRIGGER AS $$
BEGIN
-- Tens certeza que a WHERE clause ta' certa?
UPDATE medicamentos SET estoque = estoque + OLD.qtde_medic
WHERE cd_medicamento = OLD.qtde_medic;
-- Retornamos NULL por que e' um AFTER trigger
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER deletar_item_ordem_saida
AFTER DELETE ON item_ordem_saida
FOR EACH ROW EXECUTE PROCEDURE deletar_item_ordem_saida();
-Roberto
--
Examinations are formidable even to the best prepared, for
even the greatest fool may ask more the the wisest man can answer.
-- C. C. Colton
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Assine - [EMAIL PROTECTED]
Flickr agora em português. Você cria, todo mundo vê. Saiba mais.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral