Det finns också möjlighet att använda RETURNS TABLE(...)
(som beskrivs i PostgreSQL-manual
), vilket jag personligen föredrar:
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;
Detta är i praktiken samma sak som att använda SETOF tablename
, men deklarerar tabellstrukturen inline istället för att referera till ett befintligt objekt, så joins och sådant fungerar fortfarande.