PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So geben Sie eine Tabelle nach Zeilentyp in PL/pgSQL zurück

Was du bisher hast, sieht gut aus. Die fehlende Zutat:polymorphe Typen .

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$;

Anruf (wichtig):

SELECT * FROM change_val(NULL::some_tbl);

db<>fiddle hier
Altes sqlfiddle

Siehe (letzter Absatz):