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