#postgresql
Вопрос:
У меня есть пользовательская функция postgres f_test
с типом возврата as RETURNS SETOF TYPE1
. TYPE1
это тип с примерно 10 столбцами.
Внутри процедуры postgres P1
я хочу сохранить выходные f_test
данные в переменной массива.
Я попытался выполнить приведенный ниже код, чтобы сделать то же самое внутри процедуры P1.
v_array := array_agg(f_test());
Но я получаю приведенную ниже ошибку из-за этого утверждения.
%aggregate function calls cannot contain set-returning function calls
Я также попробовал приведенный ниже код
v_array := array_agg(row(f_test()));
что тоже возвращает ту же ошибку.
Как я могу сохранить результирующий набор f_test
в переменной массива?
Ответ №1:
Вы можете использовать метод SELECT INTO:
select
array_agg(f_test)
into
v_array
from
f_test();
Вы также можете использовать оператор присваивания:
v_array := (select array_agg(f_test) from f_test());