PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да вмъкнете няколко реда с помощта на функция в PostgreSQL

Функцията, която имате по-скоро трябва да бъде:

CREATE FUNCTION insertdata(varchar(10),varchar(40)) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   VALUES ($1,$2); 
$$ 
LANGUAGE sql STRICT;
  • Не цитирайте името на езика. Това е идентификатор.

  • Винаги предоставяйте целеви списък с постоянни твърдения. В противен случай, ако по-късно промените дефиницията на таблицата, функцията може да се държи по неочакван начин.

  • Никога не използвайте char(n) , освен ако не знаете какво правите. Просто бих използвал text .

За вмъкване на няколко реда , можете да вземете масив от съставен тип или два масива с еднакъв брой елементи да се разгнезди паралелно. Демонстриране на последното:

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;

Обаждане:

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

Предпочитам да използвам функция plpgsql и да проверя дали броят на елементите е еднакъв и в двата масива, за да предотвратя грешки. Използвайте array_length(arr1, 1) ...

Postgres 9.4 или по-нова версия...

... въведе нов вариант на unnest, който приема множество масиви паралелно - без странностите на горния хак (никога не се задава по подразбиране CROSS JOIN )

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявете параметър (настройка postgresql.conf) като max_connections

  2. Последователността не се нулира след съкращаване на таблицата

  3. Автоматично нарастване на PostgreSQL

  4. SQLAlchemy Core групово вмъкване бавно

  5. org.hibernate.internal.util.config.ConfigurationException:Не можа да се намери ресурс cfg.xml [/HibernateTest/src/hibernate.cfg.xml]