PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Matrice di righe PL/pgSQL

Con PostgreSQL moderno puoi semplificare tale funzione.
Impostazione di test:

CREATE TABLE tbl1 (id int, value text);

Non è necessario creare un tipo in modo esplicito in questo caso (se il tipo è basato su una riga di tabella), viene creato per ogni tabella in modo implicito.
Funzione:

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;

Chiama:

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

Nota la sintassi di input per un array di righe!