Подтвердить что ты не робот

Сохранить выбор запроса в одном массиве в postgres

Мой код:

SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'

Он возвращает имена столбцов таблицы aean.
Теперь я объявил массив:

DECLARE colnames text[]

Как сохранить вывод select в массиве colnames. Есть ли необходимость инициализировать имена кодов?

4b9b3361

Ответ 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'
)