Мой код:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
Он возвращает имена столбцов таблицы aean
.
Теперь я объявил массив:
DECLARE colnames text[]
Как я могу сохранить вывод select в массиве colnames.
Есть ли необходимость инициализировать имена столбцов?
sql
arrays
postgresql
plpgsql
клещ
источник
источник
array_agg(column_name, ',')
Ответы:
Есть два пути. Один из них - агрегировать:
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' );
источник
DECLARE
использовать массив какmy_array INTEGER[];
(или любой другой соответствующий тип). Вы также можете использовать массив в предложении запроса,WHERE
напримерWHERE values = ANY(my_array)
. ОбъектANY
принимает массив или набор и проверяет его присутствие в этом массиве / наборе, поэтомуIN ()
в определенном смысле он функционирует аналогичноУ меня была точно такая же проблема. Еще одна рабочая модификация решения Дениса (необходимо указать тип):
SELECT ARRAY( SELECT column_name::text FROM information_schema.columns WHERE table_name='aean' )
источник