Ergebnis 1 bis 5 von 5

Thema: Array aus SQL-Abfrage füllen?

  1. #1
    Chuqa ist offline Benutzer
    Registriert seit
    25.01.2006
    Beiträge
    39

    Standard 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:
    Code:
    [...]
    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

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Chuqa Beitrag anzeigen
    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:
    Code:
    [...]
    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:

    Code:
    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Chuqa ist offline Benutzer
    Registriert seit
    25.01.2006
    Beiträge
    39

    Standard

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

    gruß chuqa

  4. #4
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Chuqa Beitrag anzeigen
    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.

    Code:
    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
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    Chuqa ist offline Benutzer
    Registriert seit
    25.01.2006
    Beiträge
    39

    Standard

    Ok, danke

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 02.03.2012, 18:33
  2. Antworten: 11
    Letzter Beitrag: 28.02.2010, 21:50
  3. Problem Array mit Execute füllen
    Von flat4 im Forum PL/pgSQL
    Antworten: 5
    Letzter Beitrag: 19.05.2009, 13:03
  4. PostgreSQL Array als Perl Array?
    Von zack im Forum Programmierung
    Antworten: 1
    Letzter Beitrag: 13.11.2008, 20:45
  5. Antworten: 10
    Letzter Beitrag: 11.09.2007, 14:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum