PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Tableau de lignes PL/pgSQL

Avec PostgreSQL moderne, vous pouvez simplifier une telle fonction.
Configuration du test :

CREATE TABLE tbl1 (id int, value text);

Pas besoin de créer explicitement un type dans ce cas (si le type est basé sur une ligne de tableau), il est créé implicitement pour chaque tableau.
Fonction :

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;

Appel :

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

Notez la syntaxe d'entrée pour un tableau de lignes !