web-dev-qa-db-de.com

Speichern Sie die Ausgabe der ausgewählten Abfrage in einem Array in postgres

Mein Code ist:

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

Es werden die Spaltennamen der Tabelle aean zurückgegeben.
Nun habe ich ein Array deklariert:

DECLARE colnames text[]

Wie kann ich die Ausgabe von select im Feld colnames speichern?.
Müssen Spaltennamen initialisiert werden?

56
mitesh

Es gibt zwei Möglichkeiten. Eine ist zu aggregieren:

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

Das andere ist die Verwendung eines Array-Konstruktors:

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

Ich gehe davon aus, dass dies für plpgsql ist. In diesem Fall können Sie es folgendermaßen zuweisen:

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

Ich hatte genau das gleiche Problem. Nur noch eine funktionierende Modifikation der von Denis gegebenen Lösung (der Typ muss angegeben werden):

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