Der er også mulighed for at bruge RETURNS TABLE(...)
(som beskrevet i PostgreSQL-manual
), som jeg personligt foretrækker:
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;
Dette er faktisk det samme som at bruge SETOF tablename
, men erklærer tabelstrukturen inline i stedet for at referere til et eksisterende objekt, så joinforbindelser og sådan vil stadig fungere.