sql >> Databáze >  >> RDS >> PostgreSQL

Jak vložit více řádků pomocí funkce v PostgreSQL

funkce, kterou máte by spíše mělo být:

CREATE FUNCTION insertdata(varchar(10),varchar(40)) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   VALUES ($1,$2); 
$$ 
LANGUAGE sql STRICT;
  • Neuvádějte název jazyka. Je to identifikátor.

  • Vždy poskytněte cílový seznam s trvalými prohlášeními. Jinak, pokud později změníte definici tabulky, funkce se může chovat neočekávaným způsobem.

  • Nikdy nepoužívejte char(n) , pokud nevíte, co děláte. Použil bych pouze text .

Chcete-li vložit více řádků , můžete vzít pole složeného typu nebo dvě pole se stejným počtem prvků k paralelnímu uhnízdění. Předvedení toho druhého:

CREATE FUNCTION insertdata(_arr1 text[], _arr2 text[]) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT unnest(_arr1), unnest(_arr2);
$$ 
LANGUAGE sql STRICT;

Volejte:

SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');

Raději bych použil funkci plpgsql a zkontroloval, zda je počet prvků v obou polích stejný, aby se předešlo chybám. Použijte array_length(arr1, 1) ...

Postgres 9.4 nebo novější ...

... představila novou variantu unnest, která akceptuje více polí paralelně – bez zvláštností výše uvedeného hacku (nikdy není výchozí CROSS JOIN )

   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT * FROM unnest(_arr1, _arr2);  -- must be in FROM list



  1. Spočítejte počet překrývajících se prvků v poli Postgres

  2. Šifrovat datový provoz mezi c# a mysql

  3. Škálování PostgreSQL pomocí fondů Connection Poolers a Load Balancers

  4. 11 způsobů, jak získat primární klíč v SQL Server (příklady T-SQL)