PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como retornar uma tabela por tipo de linha em PL/pgSQL


O que você tem até agora parece bom. O ingrediente ausente:tipos polimórficos .
CREATE OR REPLACE FUNCTION change_val(_tbl_type anyelement)
  RETURNS SETOF anyelement  -- problem solved
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY EXECUTE format(
      'UPDATE %s SET val = 2 RETURNING *;'
     , pg_typeof(_tbl_type))
     );
END
$func$;

Ligue (importante):
SELECT * FROM change_val(NULL::some_tbl);

db<>fiddle aqui
Antigo sqlfiddle

Veja (último parágrafo):