Что самый легкий путь состоит в том, чтобы возвратить recordset из хранимой процедуры 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"

Я знаю, что могу определить ТИП и затем цикл через recordset как курсор, но 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;

Отметьте "зачет ВОЗВРАТОВ [имя таблицы]". Но это, кажется, не является самым гибким. Это разваливается, если я пытаюсь возвратить соединение нескольких таблиц.

9
задан Erwin Brandstetter 12 July 2013 в 20:39
поделиться

1 ответ

Вы должны быть в состоянии использовать выходные параметры, как это:

CREATE OR REPLACE FUNCTION get_countries(country_code OUT text, country_name OUT text)
RETURNS setof record
AS $$ SELECT country_code, country_name FROM country_codes $$
LANGUAGE sql;
10
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: