Bom dia,
Tenho a seguinte função:
CREATE TYPE totalmessagebydate AS (total int4, status int4, data date);
CREATE OR REPLACE FUNCTION my_function()
RETURNS SETOF totalmessagebydate AS
'
DECLARE
s totalmessagebydate%ROWTYPE;
messages RECORD;
BEGIN
CREATE TEMPORARY TABLE tb_total
(
data date,
total int
) WITHOUT OIDS;
INSERT INTO tb_total (data, total) VALUES (\'2006-05-01\', 1);
INSERT INTO tb_total (data, total) VALUES (\'2006-05-02\', 2);
INSERT INTO tb_total (data, total) VALUES (\'2006-05-03\', 3);
INSERT INTO tb_total (data, total) VALUES (\'2006-05-04\', 4);
INSERT INTO tb_total (data, total) VALUES (\'2006-05-05\', 5);
FOR messages IN SELECT data, sum(total) as total
FROM tb_total
GROUP BY data LOOP
s.data := messages.data;
s.status := 1;
s.total := messages.total;
RETURN NEXT s;
END LOOP;
DROP TABLE tb_total;
RETURN;
END '
LANGUAGE 'plpgsql' VOLATILE;
SELECT * FROM my_function();
Quando executo a função na primeira vez após a criação, é executada com sucesso. Porém após a primeira execução, está retornando o erro:
ERRO: relação com OID 147470 não existe
CONTEXT: PL/pgSQL function “my_function” line 13 at SQL statement
Alguém poderia ajudar-me com este problema?
Obrigada!