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

PL/pgSQL Array af rækker

Med moderne PostgreSQL kan du forenkle en sådan funktion.
Testopsætning:

CREATE TABLE tbl1 (id int, value text);

Det er ikke nødvendigt at oprette en type eksplicit i dette tilfælde (hvis typen er baseret på en tabelrække), den oprettes implicit for hver tabel.
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;

Ring til:

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

Bemærk inputsyntaksen for en række rækker!



  1. Oracle BLOB-udvinding meget langsom

  2. Hvad repræsenterer en dobbelt i sql-server?

  3. JPA - Ingen Persistence-udbyder for EntityManager ved navn {{NAME_HERE}}

  4. PostgreSQL brugerliste