Istnieje również możliwość użycia RETURNS TABLE(...)
(zgodnie z opisem w Podręcznik PostgreSQL
), które osobiście wolę:
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;
Jest to praktycznie to samo, co użycie SETOF tablename
, ale deklaruje wewnętrzną strukturę tabeli zamiast odwoływać się do istniejącego obiektu, więc łączy i takie nadal będą działać.