PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Matriz de linhas PL/pgSQL


Com o PostgreSQL moderno, você pode simplificar essa função.
Configuração de teste:
CREATE TABLE tbl1 (id int, value text);

Não há necessidade de criar um tipo explicitamente neste caso (se o tipo for baseado em uma linha da tabela), ele é criado para cada tabela implicitamente.
Função:
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;

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

Observe a sintaxe de entrada para uma matriz de linhas!