Какой самый простой способ вернуть набор записей из хранимой процедуры 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 [имя таблицы] ", Но это неКажется, он самый гибкий. Он разваливается, если я пытаюсь вернуть объединение нескольких таблиц.