Thông thường,libpqThu thập toàn bộ kèo bóng đá c1 quả của lệnh SQL và trả lại cho ứng dụng dưới dạngpgresult
. Điều này có thể không khả thi cho các lệnh trả về một số lượng lớn các kèo bóng đá c1. Đối với những trường hợp như vậy, các ứng dụng có thể sử dụngPQSendQuery
vàPQGetResult
inChế độ kèo bóng đá c1 đơn. Trong chế độ này, (các) kèo bóng đá c1 kết quả được trả lại cho ứng dụng một lần, khi chúng được nhận từ máy chủ.
Để vào chế độ kèo bóng đá c1 đơn, gọiPQSetSinglerowMode
Ngay sau cuộc gọi thành công củaPQSendQuery
(hoặc hàm anh chị em). Lựa chọn chế độ này chỉ có hiệu lực cho kèo bóng đá c1 hiện đang thực hiện. Sau đó gọiPQGetResult
Nhiều lần, cho đến khi nó trả về NULL, như được ghi lại trongPhần 33.4. Nếu truy vấn trả về bất kỳ kèo bóng đá c1 nào, chúng sẽ được trả lại dưới dạng cá nhânpgresult
Đối tượng, trông giống như kết quả kèo bóng đá c1 thông thường ngoại trừ có mã trạng tháipgres_single_tuple
thay vìPGRES_TUDS_OK
. Sau kèo bóng đá c1 cuối cùng hoặc ngay lập tức nếu truy vấn trả về các kèo bóng đá c1 không, một đối tượng không có kèo bóng đá c1 có trạng tháiPGRES_TUDS_OK
được trả về; Đây là tín hiệu mà không còn kèo bóng đá c1 sẽ đến. (Nhưng lưu ý rằng vẫn cần phải tiếp tục gọiPQGetResult
Cho đến khi nó trả về null.) Tất cả những điều nàypgresult
Đối tượng sẽ chứa cùng một Dữ liệu mô tả kèo bóng đá c1 (tên cột, loại, v.v.) mà bình thườngpgresult
Đối tượng cho kèo bóng đá c1 sẽ có. Mỗi đối tượng nên được giải phóng bằngPQClear
như thường lệ.
PQSetSinglerowMode
Chọn Chế độ kèo bóng đá c1 đơn cho truy vấn hiện đang thực hiện.
int pqsetsinglerowmode (pgconn *Conn);
Hàm này chỉ có thể được gọi ngay sau đóPQSendQuery
hoặc một trong các chức năng anh chị em của nó, trước bất kỳ hoạt động nào khác trên kèo bóng đá c1 nối nhưPQConsumeInput
hoặcPQGetResult
. Nếu được gọi vào đúng thời điểm, hàm sẽ kích hoạt chế độ kèo bóng đá c1 đơn cho truy vấn hiện tại và trả về 1. Nếu không thì chế độ vẫn không thay đổi và hàm trả về 0. Trong mọi trường hợp, chế độ trở lại bình thường sau khi hoàn thành truy vấn hiện tại.
Trong khi xử lý truy vấn, máy chủ có thể trả về một số kèo bóng đá c1 và sau đó gặp lỗi, khiến truy vấn bị hủy bỏ. Thông thường,libpqLoại bỏ mọi kèo bóng đá c1 và báo cáo như vậy chỉ có lỗi. Nhưng ở chế độ kèo bóng đá c1 đơn, những kèo bóng đá c1 đó đã được trả lại cho ứng dụng. Do đó, ứng dụng sẽ thấy một sốpgres_single_tuple
pgresult
Đối tượng theo sau làPGRES_FATAL_ERROR
Đối tượng. Đối với hành vi giao dịch thích hợp, ứng dụng phải được thiết kế để loại bỏ hoặc hoàn tác bất cứ điều gì đã được thực hiện với các kèo bóng đá c1 được xử lý trước đó, nếu truy vấn cuối cùng không thành công.