Mój kod to:
SELECT column_name
FROM information.SCHEMA.columns
WHERE table_name = 'aean'
Zwraca nazwy kolumn tabeli aean
.
Teraz zadeklarowałem tablicę:
DECLARE colnames text[]
Jak mogę przechowywać dane wyjściowe select w tablicy colnames.
Czy istnieje potrzeba inicjowania nazw kolumn?
sql
arrays
postgresql
plpgsql
mitesh
źródło
źródło
array_agg(column_name, ',')
Odpowiedzi:
Istnieją dwa sposoby. Jedna to agregacja:
SELECT array_agg(column_name::TEXT) FROM information.schema.columns WHERE table_name = 'aean'
Drugim jest użycie konstruktora tablicy:
SELECT ARRAY( SELECT column_name FROM information.schema.columns WHERE table_name = 'aean')
Przypuszczam, że to jest dla plpgsql. W takim przypadku możesz to przypisać w ten sposób:
colnames := ARRAY( SELECT column_name FROM information.schema.columns WHERE table_name='aean' );
źródło
DECLARE
tablicę asmy_array INTEGER[];
(lub jakikolwiek inny odpowiedni typ). Możesz również użyć tablicy wWHERE
klauzuli zapytania, takiej jakWHERE values = ANY(my_array)
.ANY
Pobiera tablicę lub zestaw i sprawdza obecność w tej tablicy / set, więc to działa równoważnie doIN ()
w pewnym sensieMiałem dokładnie ten sam problem. Jeszcze jedna działająca modyfikacja rozwiązania podanego przez Denisa (należy określić typ):
SELECT ARRAY( SELECT column_name::text FROM information_schema.columns WHERE table_name='aean' )
źródło