sql >> Databáze >  >> RDS >> PostgreSQL

Jak vrátit tabulku podle typu řádku v PL/pgSQL

To, co zatím máte, vypadá dobře. Chybějící složka:polymorfní typy .

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

Zavolejte (důležité):

SELECT * FROM change_val(NULL::some_tbl);

db<>fiddle zde
Staré sqlfiddle

Viz (poslední odstavec):




  1. Uložené procedury v Ruby on Rails

  2. ASPNETDB.mdf pro MySQL

  3. Moje oblíbená rozšíření PostgreSQL - část druhá

  4. Rekurzivní funkce pro komentáře a odpovědi PHP aplikace