web-dev-qa-db-fra.com

Stockez la sortie de la requête de sélection dans un tableau dans PostgreSQL

Mon code est:

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

Il renvoie les noms de colonne de la table aean.
Maintenant, j'ai déclaré un tableau:

DECLARE colnames text[]

Comment puis-je stocker la sortie de select dans un tableau de noms de colonnes.
Faut-il initialiser les noms de colonnes?

56
mitesh

Il y a deux façons. L'une consiste à regrouper:

SELECT array_agg(column_name::TEXT)
FROM information.schema.columns
WHERE table_name = 'aean'

L'autre consiste à utiliser un constructeur de tableau:

SELECT ARRAY(
SELECT column_name 
FROM information.schema.columns 
WHERE table_name = 'aean')

Je suppose que c'est pour plpgsql. Dans ce cas, vous pouvez l'affecter comme ceci:

colnames := ARRAY(
SELECT column_name
FROM information.schema.columns
WHERE table_name='aean'
);
107
Denis de Bernardy

J'ai eu exactement le même problème. Encore une modification de travail de la solution donnée par Denis (le type doit être spécifié):

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