Има и опция за използване на RETURNS TABLE(...)
(както е описано в Ръководство за PostgreSQL
), което аз лично предпочитам:
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;
Това на практика е същото като използването на SETOF tablename
, но декларира структурата на таблицата вградена, вместо да препраща към съществуващ обект, така че обединенията и подобни ще продължат да работят.