2011-06-19 11 views
35

Mój kod to:Store kwerendę wybierającą w jednej tablicy w PostgreSQL

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

Zwraca nazwy kolumnie tabeli aean.
Teraz zadeklarowały tablicy:

DECLARE colnames text[] 

Jak mogę zapisać wybrać na wyjście w colnames tablicy.
Czy istnieje potrzeba inicjowania nazw kolorów?

+0

+1 dotarłem tu z dokładnym sam błąd wiadomości-BŁĄD: nie można odnaleźć typ tablicy dla typu danych information_schema.sql_identifier . Próbowałem z 'array_agg (column_name, ',')' – jerrymouse

Odpowiedz

71

Istnieją dwa sposoby. Jednym z nich jest do agregowania:

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

Drugim jest użycie konstruktora Array:

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

mam przypuszczenia to dla plpgsql. W takim przypadku możesz go przypisać w następujący sposób:

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

czy możesz dać mi kod, który działa na postgresie, ponieważ to nie działa na PostgreS ERROR: nie można znaleźć typu tablicy dla typu danych information_schema.sql_identifier – mitesh

+0

Przepraszam "o to. Bezmyślne kopiowanie i wklejanie dostało array_agg() zawarte we wszystkich trzech wywołaniach. Wpisałem też pierwszą wersję, aby uczynić twoją wersję PG szczęśliwą. –

+1

+1 Dzięki, szukałem dokładnie tego samego. – jerrymouse

0

Miałem dokładnie ten sam problem. Jeszcze jedna zmiana pracy rozwiązania podanego przez Denis (typ musi być określona):

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