Сохранить выбор запроса в одном массиве в postgres
Мой код:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
Он возвращает имена столбцов таблицы aean
.
Теперь я объявил массив:
DECLARE colnames text[]
Как сохранить вывод select в массиве colnames.
Есть ли необходимость инициализировать имена кодов?
Ответы
Ответ 1
Есть два пути. Один из них заключается в объединении:
SELECT array_agg(column_name::TEXT)
FROM information.schema.columns
WHERE table_name = 'aean'
Другой - использовать конструктор массива:
SELECT ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name = 'aean')
Я предполагаю, что это для plpgsql. В этом случае вы можете назначить его следующим образом:
colnames := ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name='aean'
);
Ответ 2
У меня была точно такая же проблема. Еще одна рабочая модификация решения, заданного Денисом (тип должен быть указан):
SELECT ARRAY(
SELECT column_name::text
FROM information_schema.columns
WHERE table_name='aean'
)