TopDev

PostgreSQL có hỗ trợ stored procedures và functions không?

minhdev 📖 2 phút đọc

, PostgreSQL hỗ trợ cả stored procedures (thủ tục lưu trữ)stored functions (hàm lưu trữ).

Tuy nhiên, có một số điểm khác biệt quan trọng giữa functionprocedure trong PostgreSQL mà bạn cần lưu ý:



✅ Stored Functions trong PostgreSQL#

● Được hỗ trợ từ rất sớm (trước cả version 11).#

● Có thể trả về giá trị (RETURN), được sử dụng phổ biến trong truy vấn SQL.#

● Có thể dùng trong SELECT, UPDATE, INSERT, WHERE, v.v.#

● Bắt buộc phải có RETURN và thường được dùng để tính toán, kiểm tra logic, hoặc lấy dữ liệu.#

Ví dụ:#

CREATE FUNCTION tinh_tong(a INT, b INT) RETURNS INT AS $$ BEGIN RETURN a + b; END; $$ LANGUAGE plpgsql;



✅ Stored Procedures trong PostgreSQL#

● Được hỗ trợ chính thức từ PostgreSQL 11 trở đi.#

Không trả về giá trị, mà thực hiện các thao tác như thay đổi dữ liệu, gọi transaction (COMMIT, ROLLBACK).#

Không thể dùng trong câu lệnh SELECT.#

● Phù hợp cho các quy trình nghiệp vụ phức tạp.#

Ví dụ:#

CREATE PROCEDURE cap_nhat_gia(id_sanpham INT, gia_moi NUMERIC) LANGUAGE plpgsql AS $$ BEGIN UPDATE sanpham SET gia = gia_moi WHERE id = id_sanpham; END; $$;

Gọi procedure:#

CALL cap_nhat_gia(101, 299000);



So sánh nhanh:#

Tiêu chí Function Procedure
Có trả về giá trị ✔️ Bắt buộc ❌ Không
Dùng trong SELECT ✔️ Có thể ❌ Không
Dùng để thay đổi dữ liệu ✔️ Có thể ✔️ Có thể
Hỗ trợ transaction ❌ Không gọi COMMIT/ROLLBACK ✔️ Có thể quản lý transaction
Hỗ trợ từ version Rất sớm (trước v11) PostgreSQL 11 trở đi


Tổng kết:#

  • Nếu bạn cần thực hiện tính toán và lấy kết quả, hãy dùng function.

  • Nếu bạn cần thay đổi dữ liệu nhiều bước và kiểm soát transaction, hãy dùng procedure.

Bạn có thể kết hợp cả hai để tối ưu hóa hệ thống PostgreSQL một cách linh hoạt và hiệu quả.

Bài liên quan trong #Database

✓ Đã sao chép link