Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

33,5. Truy xuất kết quả truy vấn kèo bóng đá c1 từng kèo bóng đá c1

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ụngPQSendQueryPQGetResultinChế độ 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ọiPQSetSinglerowModeNgay 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ọiPQGetResultNhiề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_tuplethay 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ọiPQGetResultCho đế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ằngPQClearnhư 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 đóPQSendQueryhoặ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ưPQConsumeInputhoặ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.

THẬN TRỌNG

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.