Problema ao criar função com tabela temporária no postgreSQL

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!