PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PL/pgSQL-Array von Zeilen

Mit modernem PostgreSQL können Sie eine solche Funktion vereinfachen.
Testaufbau:

CREATE TABLE tbl1 (id int, value text);

In diesem Fall muss kein Typ explizit erstellt werden (wenn der Typ auf einer Tabellenzeile basiert), er wird implizit für jede Tabelle erstellt.
Funktion:

CREATE FUNCTION f_insert_rows_into_tbl1(tbl1[])
  RETURNS VOID AS
$BODY$
    INSERT INTO tbl1 (id,value)
    SELECT (a).*
    FROM   (SELECT unnest($1) AS a) x;
$BODY$ LANGUAGE sql;

Aufruf:

SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');

Beachten Sie die Eingabesyntax für ein Array von Zeilen!