Sử dụng Raw SQL, Function & Procedure trong PostgreSQL

PostgreSQL là cơ sở dữ liệu quan hệ mạnh mẽ hỗ trợ hệ thống các hàm tự định nghĩa User Defined Function (UDF)Stored Procedure phong phú. Khi làm việc với PostgreSQL mà không thông qua Entity, bạn sẽ dùng đối tượng DataSource kết hợp với cú pháp SQL đặc trưng của Postgres. Dưới đây là hướng dẫn chi tiết cách viết prompt để Claude Code sinh mã nguồn và thực thi các câu lệnh này trong NestJS thông qua lớp DataSource.

1. Gọi Database Function và Stored Procedure trong PostgreSQL

PostgreSQL phân biệt rõ ràng giữa Function (Hàm - trả về dữ liệu) và Procedure (Thủ tục - không trả về dữ liệu trực tiếp). Cách gọi của hai đối tượng này dưới mã nguồn hoàn toàn khác nhau:
  • Hàm (Database Function - tạo bằng CREATE FUNCTION): Sử dụng lệnh SELECT để kích hoạt (kể cả khi hàm thực hiện logic cập nhật dữ liệu UPDATE bên trong).
  • Thủ tục (Stored Procedure - tạo bằng CREATE PROCEDURE): Sử dụng từ khóa CALL để kích hoạt.

2. Thực thi ghi dữ liệu thuần túy (INSERT, UPDATE, DELETE)

PostgreSQL sử dụng ký tự giữ chỗ dạng $1, $2, $3 làm tham số truyền tin an toàn. Ngoài ra, PostgreSQL hỗ trợ từ khóa RETURNING giúp bạn lấy về các dữ liệu của dòng vừa ghi một cách nhanh chóng mà không cần chạy thêm lệnh SELECT phụ.