PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách chèn dữ liệu vào bảng bằng các thủ tục được lưu trữ trong postgresql

PostgreSQL không hỗ trợ các thủ tục được lưu trữ cho đến PG11. Trước đó, bạn có thể nhận được kết quả tương tự bằng cách sử dụng một hàm. Ví dụ:

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;

Sau đó, bạn có thể gọi nó như vậy:

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

Các hạn chế chính đối với các hàm được lưu trữ của Pg - so với các thủ tục được lưu trữ thực sự - là:

  1. không có khả năng trả về nhiều bộ kết quả
  2. không hỗ trợ cho các giao dịch tự quản (BEGIN, COMMIT và ROLLBACK trong một hàm)
  3. không hỗ trợ cú pháp CALL chuẩn SQL, mặc dù trình điều khiển ODBC và JDBC sẽ dịch các lệnh gọi cho bạn.

Ví dụ

Bắt đầu từ PG11, CREATE PROCEDURE cú pháp được giới thiệu cung cấp hỗ trợ cho các giao dịch.

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

Có thể được gọi bằng:

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. Lặp lại trên số nguyên [] trong PL / pgSQL

  2. Làm thế nào để nâng cấp DataFrame của gấu trúc vào bảng PostgreSQL?

  3. PostgreSQL Meltdown Benchmarks

  4. Cách cấu hình AppArmor cho PostgreSQL và TimescaleDB

  5. Tải kết xuất Postgres sau khi docker-soạn lên