PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstawić dane do tabeli za pomocą procedur składowanych w postgresql

PostgreSQL nie obsługiwał procedur składowanych aż do wersji PG11. Wcześniej można było uzyskać ten sam wynik za pomocą funkcji. Na przykład:

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;

Następnie możesz to nazwać tak:

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

Główne ograniczenia funkcji składowanych Pg - w porównaniu z prawdziwymi procedurami składowanymi - to:

  1. niemożność zwrócenia wielu zestawów wyników
  2. brak obsługi transakcji autonomicznych (BEGIN, COMMIT i ROLLBACK w ramach funkcji)
  3. brak obsługi standardowej składni SQL CALL, chociaż sterowniki ODBC i JDBC będą tłumaczyć wywołania za Ciebie.

Przykład

Począwszy od PG11, CREATE PROCEDURE wprowadzono składnię, która zapewnia obsługę transakcji.

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$;

Które można nazwać za pomocą:

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. Gdzie PostgreSQL przechowuje pliki konfiguracyjne/konfiguracyjne?

  2. Dodanie nowej wartości do istniejącego typu ENUM

  3. W pełni zarządzany hosting PostgreSQL na platformach AWS i Azure uruchamia się na czas dla starszych migracji

  4. Generate_series w Postgresie od daty rozpoczęcia i zakończenia w tabeli

  5. Wdrażanie i konfiguracja PostgreSQL za pomocą Puppet