Hàm PostgreSQL để trả về một bảng

Ham Postgresql De Tra Ve Mot Bang



Đôi khi, bạn có thể muốn tạo một hàm trả về một bảng trong cơ sở dữ liệu PostgreSQL của mình để gói gọn tập kết quả. Có thể tạo một hàm “pgSQL” cho phép bạn truy xuất các bản ghi và sử dụng truy vấn trả về để hiển thị tập kết quả dưới dạng bảng. Bài đăng này hướng dẫn bạn cách tạo hàm PostgreSQL trả về một bảng.

Cách tạo hàm PostgreSQL để trả về bảng

Khi bạn có cơ sở dữ liệu PostgreSQL và muốn kiểm tra các bản ghi từ bảng, việc sử dụng hàm định kỳ là cách thuận tiện nhất, đặc biệt là hàm PostgreSQL trả về một bảng trong tập kết quả của nó. Bằng cách này, bạn gói gọn tập kết quả của mình và sử dụng phương pháp này sẽ giúp tổ chức mã tốt hơn.

Sau đây là cú pháp để tạo hàm PostgreSQL trả về một bảng:







TẠO HOẶC THAY THẾ CHỨC NĂNG function_name(parameter_list)

BẢNG TRẢ LẠI(column_list)

NHƯ $$

BẮT ĐẦU TRUY VẤN TRẢ LẠI(truy vấn);

KẾT THÚC;

$$ NGÔN NGỮ plpgsql

Điểm hay của việc tạo các hàm như vậy là nó cho phép bạn chỉ định nhiều “danh sách cột” khác nhau thay vì trả về một giá trị duy nhất từ ​​bảng của bạn. Hãy lấy hai ví dụ để giúp chúng ta hiểu những bước cần làm theo.



Ví dụ 1: Làm việc với một đầu vào

Khi tạo hàm trả về một bảng, bạn phải cung cấp đối số để sử dụng với truy vấn trả về. Đối số có thể là một mẫu hoặc một đầu vào cụ thể. Ví dụ này đưa ra trường hợp chúng tôi sử dụng một đầu vào duy nhất làm đối số.



Sau đây là bảng “student” mà chúng ta sẽ sử dụng cho truy vấn của mình:





Trong hình ảnh sau đây, chúng ta tạo một hàm có tên “get_student” lấy INT làm đối số. Trong phần BẢNG TRẢ LẠI, chúng tôi trả về một bảng có bốn cột: “student_id”, “student_name”, “student_faculty” và “current_status”.



Tất cả các cột này nhận giá trị từ truy vấn trả về mà chúng tôi xác định. Lưu ý rằng truy vấn trả về sử dụng câu lệnh WHERE bằng danh sách tham số mà chúng ta chỉ định khi tạo hàm.

Sau khi tạo hàm, bạn sẽ nhận được kết quả đầu ra tương tự như kết quả mà chúng tôi đã có trước đó, xác nhận rằng hàm PostgreSQL của bạn đã được tạo thành công. Để xác minh thêm điều này, hãy chạy lệnh sau để liệt kê các chức năng có sẵn:

\df *get_student();

Chúng tôi thêm dấu hoa thị để khớp với bất kỳ hàm nào có tên được chỉ định. Kết quả đầu ra cho thấy rằng chúng tôi có hàm PostgreSQL trong cơ sở dữ liệu của mình.

Bước cuối cùng là kiểm tra chức năng đã tạo. Chạy câu lệnh “select” để gọi hàm. Sau đó, thêm đối số dự kiến. Đối với trường hợp của chúng tôi, tham số có kiểu INT. Do đó, chúng ta thêm 1 làm đối số để truy xuất các bản ghi khớp với nó và trả về một bảng như minh họa sau:

Ví dụ 2: Làm việc với Mẫu đầu vào

Khi không chắc chắn về giá trị sẽ sử dụng với truy vấn trả về, bạn có thể sử dụng toán tử ILIKE để khớp với một mẫu nhất định. Ví dụ: nếu bạn có tên và chỉ biết một phần của chuỗi, toán tử ILIKE cho phép bạn sử dụng ký hiệu “%” để xác định mẫu của bạn sẽ như thế nào.

Chúng tôi sử dụng bảng sau cho trường hợp này và nhắm mục tiêu cột tên:

Chúng ta tạo một hàm tương tự như hàm chúng ta đã làm trước đó. Tuy nhiên, loại tham số đã thay đổi và truy vấn trả về sử dụng toán tử ILIKE được thêm làm đối số khi gọi hàm.

Khi hàm đã sẵn sàng, chúng ta có thể gọi nó để trả về bảng. Có nhiều cách khác nhau để đi về nó. Ví dụ: nếu mẫu tìm kiếm chứa “Jo” trong chuỗi, chúng tôi sẽ thực hiện truy vấn lệnh như sau:

Chọn * từ get_details('%Jo%');

Chúng tôi khớp tất cả các giá trị với “Jo” trong chuỗi của chúng, mang lại cho chúng tôi hai bản ghi.

Nếu chúng ta chỉ biết phần cuối của chuỗi, chúng ta sẽ xoắn truy vấn và chạy nó như sau:

Chọn * từ get_details('%Tyson');

Cuối cùng, nếu chúng ta biết phần đầu tiên của chuỗi, chúng ta sẽ thêm ký hiệu “&” sau mẫu như sau:

Chọn * từ get_details('Tim%');

Đó là những ví dụ khác nhau về cách sử dụng hàm PostgreSQL để trả về một bảng.

Phần kết luận

PostgreSQL là một cơ sở dữ liệu mạnh mẽ với nhiều tính năng. Khi tạo hàm, bạn có thể đặt chúng trả về một bảng dưới dạng tập kết quả vì nhiều lý do khác nhau, bao gồm cả việc đạt được tính năng đóng gói. Bài đăng này trình bày hai ví dụ về cách tạo và sử dụng hàm trả về một bảng trong PostgreSQL.