PostgreSQL: kèo chấp bóng đá | |||
---|---|---|---|
prev | UP | Chương 31.libpq- C Thư viện | NEXT |
Thông thường,libpqThu thập toàn bộ kèo bóng đá cúp c2 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 đá cúp c2. Đố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 đá cúp c2 đơn. Trong chế độ này, (các) kèo bóng đá cúp c2 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 đá cúp c2 đơ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 đá cúp c2 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 31.4. Nếu truy vấn trả về bất kỳ kèo bóng đá cúp c2 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 đá cúp c2 thông thường ngoại trừ có mã trạng tháipgres_single_tuplethay vìPGRES_TUDS_OK. Sau kèo bóng đá cúp c2 cuối cùng hoặc ngay lập tức nếu truy vấn trả về các kèo bóng đá cúp c2 không, một đối tượng không có kèo bóng đá cúp c2 có trạng tháipgres_tuples_okđược trả về; Đây là tín hiệu mà không còn kèo bóng đá cúp c2 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 đá cúp c2 (tên cột, loại, v.v.) mà bình thườngpgresultĐối tượng cho kèo bóng đá cúp c2 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 đá cúp c2 đơ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 đá cúp c2 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 đá cúp c2 đơ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 đá cúp c2 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 đá cúp c2 và báo cáo như vậy chỉ có lỗi. Nhưng ở chế độ kèo bóng đá cúp c2 đơn, những kèo bóng đá cúp c2 đó đã đượ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 đá cúp c2 được xử lý trước đó, nếu truy vấn cuối cùng không thành công. |