Je zde také možnost použití RETURNS TABLE(...)
(jak je popsáno v Manuál PostgreSQL
), který osobně preferuji:
CREATE OR REPLACE FUNCTION get_countries()
RETURNS TABLE(
country_code text,
country_name text
)
AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
To je v podstatě stejné jako použití SETOF tablename
, ale deklaruje strukturu tabulky inline namísto odkazování na existující objekt, takže spojení a takové budou stále fungovat.