Какой самый простой способ вернуть набор записей из хранимой процедуры PostgreSQL?

У меня просто есть таблица, которая содержит список стран и их коды стран ISO. Я упаковываю запрос в хранимую процедуру (она же функция), например:

CREATE OR REPLACE FUNCTION get_countries(
                    ) RETURNS setof record AS $
        SELECT country_code, country_name FROM country_codes
$ LANGUAGE sql;

Я получаю ошибку:

ERROR:  a column definition list is required for functions returning "record"

Я знаю, что могу определить ТИП, а затем перебрать набор записей, как курсор, но у IIRC есть лучший способ сделать это в более новых версиях PostgreSQL (я использую 8.4.3), но я выдергиваю свои волосы, пытаясь запомнить.

Редактировать:

Это работает:

CREATE OR REPLACE FUNCTION get_countries(
                    ) RETURNS setof country_codes AS $
        SELECT country_code, country_name FROM country_codes
$ LANGUAGE sql;

Обратите внимание на «ВОЗВРАЩАЕТСЯ setof [имя таблицы]». Но это не кажется самым гибким. Он разваливается, если я пытаюсь вернуть объединение нескольких таблиц.

Ответы на вопрос(2)

Ваш ответ на вопрос