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

Как да вмъкнете данни в таблица с помощта на съхранени процедури в postgresql

PostgreSQL не поддържаше съхранени процедури до PG11. Преди това бихте могли да получите същия резултат с помощта на функция. Например:

CREATE FUNCTION MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
  RETURNS void AS
  $BODY$
      BEGIN
        INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
        VALUES(_sno, _eid, _sd, _ed, _sid, _status);
      END;
  $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

След това можете да го наречете така:

select * from MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );

Основните ограничения на съхранените функции на Pg - в сравнение с истинските съхранени процедури - са:

  1. невъзможност за връщане на множество набори от резултати
  2. няма поддръжка за автономни транзакции (BEGIN, COMMIT и ROLLBACK в рамките на функция)
  3. няма поддръжка за стандартния SQL синтаксис CALL, въпреки че ODBC и JDBC драйверите ще превеждат повиквания вместо вас.

Пример

Започвайки от PG11, CREATE PROCEDURE въведен е синтаксис, който осигурява поддръжка за транзакции.

CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $BODY$
    INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
    VALUES(_sno, _eid, _sd, _ed, _sid, _status);   
$BODY$;

Което може да бъде извикано с:

CALL MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );


  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

  2. 3 начина за изброяване на всички съхранени процедури в PostgreSQL база данни

  3. pgAdmin алтернативи - PostgreSQL управление на база данни GUI ClusterControl

  4. Как да посочите раздел в предния край на postgres COPY

  5. Избиране на всички записи с SQL LIMIT и OFFSET заявка