Ergebnis 1 bis 2 von 2

Thema: Iterieren über Array

  1. #1
    Sibob ist offline Neuer Benutzer
    Registriert seit
    14.03.2007
    Beiträge
    4

    Standard Iterieren über Array

    Hallo.

    Ich übergebe in meiner Funktion ein array, über dessen ich gerne iterieren möchte.

    Code:
    CREATE OR REPLACE FUNCTION insertData (text[]) RETURNS text AS $$
    DECLARE
    	var_values	ALIAS FOR $1;
    BEGIN
    
    	FOR i IN 1..var_values.length LOOP
    		INSERT INTO t_import  ( location, obu, zeit ) VALUES var_values[i];
    	END LOOP;
    
            RETURN 'signed';
    END;
    $$
    LANGUAGE plpgsql;
    in diesem text Array stehen werte für das INSERT statement. wie:
    Code:
    ( 286, 'C0400', 1081713241 ) ,( 696, 'C04001', 1081710604 ) , usw

    Leider bekomme ich immer eine Fehlermeldung:
    ERROR: syntax error at or near "$1"
    SQL Status:42601
    Kontext:SQL statement in PL/PgSQL function "insertdata" near line 6
    near "$1" kann es aber nicht sein da es geht, sobald ich das INSERT statement weg nehme.

    Wie kann ich es bauen das der INSERT String funktioniert?

    Ich kann in dem Array auch das komplette insert Statement reingeben. aber wie führe ich dann var_values[i] aus?


    Danke, mfg
    sibob

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

    Standard

    Zitat Zitat von Sibob Beitrag anzeigen
    Hallo.

    Ich übergebe in meiner Funktion ein array, über dessen ich gerne iterieren möchte.

    Leider bekomme ich immer eine Fehlermeldung:


    near "$1" kann es aber nicht sein da es geht, sobald ich das INSERT statement weg nehme.
    Doch, wenn dat so da steht, kann dat wohl so sein, oder?

    Wie kann ich es bauen das der INSERT String funktioniert?

    Ich kann in dem Array auch das komplette insert Statement reingeben. aber wie führe ich dann var_values[i] aus?
    Du bastelst damit in dynamisches SQL, um das zu executen, brauchst Du EXECUTE.

    Code:
    18:36 < akretschmer> ??execute
    18:36 < rtfm_please> For information about execute
    18:36 < rtfm_please> see http://www.dbitech.ca/slony/book/stmtddlscript.html
    18:36 < rtfm_please> or http://www.postgresql.org/docs/current/static/libpq-exec.html#LIBPQ-EXEC-MAIN
    18:36 < rtfm_please> or http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
    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

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 02.03.2012, 18:33
  2. Rule für Array ?
    Von mr.mc.mauser im Forum SQL
    Antworten: 1
    Letzter Beitrag: 03.04.2011, 13:48
  3. java -> array in db
    Von thoogr im Forum Programmierung
    Antworten: 6
    Letzter Beitrag: 04.06.2009, 14:54
  4. array contains
    Von kasu im Forum SQL
    Antworten: 1
    Letzter Beitrag: 30.01.2009, 13:11
  5. PostgreSQL Array als Perl Array?
    Von zack im Forum Programmierung
    Antworten: 1
    Letzter Beitrag: 13.11.2008, 20:45

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