Iterieren über Array

Hallo.

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

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:

( 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 aus?


Danke, mfg
sibob

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 > aus?

Du bastelst damit in dynamisches SQL, um das zu executen, brauchst Du EXECUTE.

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