Array aus SQL-Abfrage füllen?

Aloha allerseits,

kann man in einer Funktion aus einer SQL-Anweisung, die nur eine Spalte zurückliefert, das Ergebnis in einem Array speichern?
Ich stelle mir folgendes vor:

[...]
DECLARE
[...]
    var_pvArr        integer[];
BEGIN
    SELECT pv_id INTO var_pvArr FROM history WHERE time >= start_time AND time <= end_time;
[...]

Das funktioniert nur nicht so. Kann mir jemand dabei helfen?

gruß chuqa

Das geht einfacher:

test=*# select * from t1;
 i
---
 1
 2
 3
(3 rows)

test=*# SELECT ARRAY(SELECT i FROM t1);
 ?column?
----------
 {1,2,3}
(1 row)


test=*# SELECT array_to_string(ARRAY(SELECT i FROM t1), ', ');
 array_to_string
-----------------
 1, 2, 3
(1 row)

Andreas

Und wie mache ich es, wenn ich die erfragten Werte weiterverwenden will?

gruß chuqa

Du wolltest ein Array und du bekommst es. Und Du kannst es weiterverwenden, z.B. speichern.

test=# create table t2 (i int[]);
CREATE TABLE
test=*# commit;
COMMIT
test=# select * from t2;
 i
---
(0 rows)

test=*# insert into t2 (i) SELECT ARRAY(SELECT i FROM t1);
INSERT 0 1
test=*# select * from t2;
    i
---------
 {1,2,3}
(1 row)

test=*#

Andreas

Ok, danke :wink: