Er is ook de mogelijkheid om RETURNS TABLE(...)
. te gebruiken (zoals beschreven in de PostgreSQL-handleiding
), waar ik persoonlijk de voorkeur aan geef:
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;
Dit is in feite hetzelfde als het gebruik van SETOF tablename
, maar declareert de tabelstructuur inline in plaats van te verwijzen naar een bestaand object, dus joins en dergelijke zullen nog steeds werken.