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

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

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)

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