Сохранение результатов выбора запроса в одном массиве в postgres - PullRequest
50 голосов
/ 19 июня 2011

Мой код:

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

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

DECLARE colnames text[]

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

Ответы [ 2 ]

98 голосов
/ 19 июня 2011

Есть два пути.Один - агрегировать:

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'
);
3 голосов
/ 26 октября 2017

У меня была точно такая же проблема. Еще одна рабочая модификация решения, данного Денисом (тип должен быть указан):

SELECT ARRAY(
SELECT column_name::text
FROM information_schema.columns
WHERE table_name='aean'
)
...