PostgreSQLCung cấp kèo bóng đá cúp c2 để gửi các cuộc gọi chức năng đơn giản đến máy chủ.
kèo bóng đá cúp c2 này có phần lỗi thời, vì người ta có thể đạt được hiệu suất tương tự và chức năng lớn hơn bằng cách thiết lập một câu lệnh đã chuẩn bị để xác định cuộc gọi chức năng. Sau đó, thực hiện câu lệnh bằng truyền nhị phân của các tham số và kết quả thay thế cho một cuộc gọi hàm đường nhanh.
hàmPQFN
Yêu cầu thực hiện chức năng máy chủ thông qua kèo bóng đá cúp c2 dẫn nhanh:
pgresult *pqfn (pgconn *Conn,
Thefnid
Đối số là oid của hàm được thực thi.args
vàNARGS
Xác định các tham số sẽ được truyền đến hàm; Họ phải khớp với danh sách đối số chức năng được khai báo.isint
Trường của cấu trúc tham số là đúng,U.Integer
Giá trị được gửi đến máy chủ dưới dạng số nguyên của độ dài được chỉ định (đây phải là 2 hoặc 4 byte); Hoán đổi byte thích hợp xảy ra.isint
là sai, số byte được chỉ định tại*U.Ptr
được gửi không có xử lý; Dữ liệu phải ở định dạng mà máy chủ dự kiến để truyền nhị phân của kiểu dữ liệu đối số của hàm.U.PTR
là loạiint *
là lịch sử; Sẽ tốt hơn nếu xem xét nóvoid *
.)result_buf
chỉ vào bộ đệm để đặt giá trị trả về của hàm. Người gọi phải phân bổ đủ không gian để lưu trữ giá trị trả về.result_len
. Nếu dự kiến kết quả số nguyên 2 hoặc 4 byte, hãy đặtresult_is_int
thành 1, nếu không sẽ đặt nó thành 0. Cài đặtresult_is_int
đến 1 Nguyên nhânlibpqĐể hoán đổi giá trị nếu cần thiết, để nó được phân phối dưới dạng thích hợpint
Giá trị cho máy khách; Lưu ý rằng một số nguyên 4 byte được chuyển vào*result_buf
Đối với kích thước kết quả được phép. Khiresult_is_int
là 0, chuỗi byte định dạng nhị phân được gửi bởi máy chủ được trả về không biến đổi. (Trong trường hợp này tốt hơn là nên xem xétresult_buf
là loạivoid *
.)
PQFN
Luôn trả về một hợp lệpgresult
Con trỏ, có trạng tháiPGRES_COMMAND_OK
Để thành công hoặcPGRES_FATAL_ERROR
Nếu gặp một số vấn đề. Trạng thái kết quả nên được kiểm tra trước khi kết quả được sử dụng.pgresult
vớiPQClear
Khi nó không còn cần thiết nữa.
Để chuyển đối số null cho hàm, đặtlen
Trường của cấu trúc tham số đó thành-1
; Theisint
vàu
Trường sau đó không liên quan.
Nếu hàm trả về null,*result_len
được đặt thành-1
và*result_buf
không được sửa đổi.
Lưu ý rằng không thể xử lý các kết quả có giá trị được đặt khi sử dụng kèo bóng đá cúp c2 này. Ngoài ra, hàm phải là hàm đơn giản, không phải là tổng hợp, hàm cửa sổ hoặc thủ tục.
Nếu bạn thấy bất cứ điều gì trong kèo bóng đá cúp c2 liệu không chính xác, không phù hợpMẫu nàyĐể báo cáo vấn đề kèo bóng đá cúp c2 liệu.