Ola a todos os participantes da lista,
Gostaria de fazer uma função que:
1. verifica-se se um determinado valor já existe numa tabela
2. se sim, que me devolva o id desse registo
3. se não, que faca o insert e em seguida devolva o id resultante
Escrevi a seguinte código mas falta-me saber como recuperar o resultado
do EXECUTE. Alguém me pode ajudar? Obrigado.
CREATE OR REPLACE FUNCTION "Attribute".fun_insert_attribute(name text,
description text, type text)
RETURNS text AS
$BODY$
DECLARE
attribute_id integer;
n integer;
BEGIN
-- verifica se já existe
EXECUTE 'SELECT count(*) FROM "Attribute"."Attribute" WHERE "Name"
ILIKE '||name||';'
-- se já existe, conhecer o id
IF n > 1 THEN
EXECUTE 'SELECT "AttributeId" FROM "Attribute"."Attribute" WHERE
"Name" ILIKE '||name||';'
-- se não existe, inserir e conhecer o id
ELSE
EXECUTE 'INSERT INTO
"Attribute"."Attribute"("Name","Description",version_type)
VALUES('||name||','||description||','||type||') RETURNING
"AttributeId";'
END IF;
RETURN attribute_id;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Os melhores cumprimentos,
--
Eloi
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral