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 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
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ách đọc kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

1.7. Các chức năng được liên kết với lệnh cách đọc kèo bóng đá

lệnh cách đọc kèo bóng đá trong11286_11298Có các tùy chọn để đọc hoặc viết đến cách đọc kèo bóng đá nối mạng được sử dụng bởilibpq. Do đó, các chức năng là cần thiết để Truy cập trực tiếp cách đọc kèo bóng đá nối mạng này để các ứng dụng có thể thực hiện lợi thế của khả năng này.

cách đọc kèo bóng đá chức năng này chỉ được thực thi sau khi có đượcPGRES_COPY_OUThoặcPGRES_COPY_INĐối tượng cách đọc kèo bóng đá quả từPQEXEChoặcPQGetResult.

  • PQGetLineĐọc a dòng ký tự cách đọc kèo bóng đá thúc mới (được truyền đi bởi Máy chủ phụ trợ) vào chuỗi bộ đệm có độ dài kích thước.

    int PQGetLine (PGConn *Conn,
                  Char *String,
                  int length)

    nhưfgets, thói quen này Bản cách đọc kèo bóng đá lên đến chiều dài 1 ký tự thành chuỗi. Nó giống nhưNhậnTuy nhiên, trong đó Chuyển đổi việc chấm dứt dòng mới thành một byte số 0.PQGetLinereturnEOF12468_12618

    Lưu ý rằng ứng dụng phải kiểm tra xem có phải mới dòng bao gồm hai ký tự\., trong đó chỉ ra rằng máy chủ phụ trợ đã gửi xong kết quả của lệnh cách đọc kèo bóng đá. Nếu Ứng dụng có thể nhận được các dòng nhiều hơn chiều dài-1 các ký tự dài, cần phải quan tâm để chắc chắn người ta nhận ra\.dòng chính xác (và không, cho Ví dụ: nhầm lẫn cách đọc kèo bóng đá thúc của một dòng dữ liệu dài cho một người cách đọc kèo bóng đá thúc đường kẻ). Mã trong13194_13215Chứa các thói quen ví dụ xử lý chính xác giao thức cách đọc kèo bóng đá.

  • PQGetLineAsyncĐọc a dòng ký tự cách đọc kèo bóng đá thúc mới (được truyền đi bởi máy chủ phụ trợ) vào bộ đệm mà không chặn.

    int PQGetLineAnync (PGConn *Conn,
                       Char *bộ đệm,
                       int bufsize)

    thói quen này tương tự nhưPQGetLine, nhưng nó có thể được sử dụng bởi các ứng dụng phải đọc dữ liệu cách đọc kèo bóng đá không đồng bộ, nghĩa là mà không chặn. Đã phát hành lệnh cách đọc kèo bóng đá và nhận đượcPGRES_COPY_OUTPhản hồi, The Ứng dụng nên gọiPQConsumeInputPQGetLineAsyncCho đến tín hiệu cuối cùng của dữ liệu được phát hiện. Không giống nhưPQGetLine14169_14260PQGetLineAsyncSẽ trả về dữ liệu nếu dòng dữ liệu hoàn chỉnh được cách đọc kèo bóng đá thúc có sẵn tronglibpq14430_14618

    Thông thường trả về -1 nếu điểm đánh dấu dữ liệu cuối cách đọc kèo bóng đá được công nhận hoặc 0 nếu không có dữ liệu hoặc tích cực Số cho số byte dữ liệu được trả về. Nếu -1 là đã trả về, người gọi phải gọi tiếp theopqendcopy, và sau đó trở lại bình thường xử lý. Dữ liệu được trả về sẽ không vượt ra ngoài Nhân vật Newline. Nếu có thể, toàn bộ dòng sẽ được trả lại Đã có lúc. Nhưng nếu bộ đệm do người gọi cung cấp cũng vậy nhỏ để giữ một dòng được gửi bởi phụ trợ, sau đó là một phần dữ liệu dòng sẽ được trả lại. Điều này có thể được phát hiện bằng cách đọc kèo bóng đá kiểm tra Liệu Byte cuối cùng được trả lại là\ nhoặc không. Chuỗi trả về không được chấm dứt. (Nếu bạn Muốn thêm NULL chấm dứt, hãy chắc chắn vượt quaBufsizeMột nhỏ hơn phòng thực sự có sẵn.)

  • pqputlineGửi a Chuỗi cách đọc kèo bóng đá thúc null vào máy chủ phụ trợ. Trả về 0 nếu ĐƯỢC RỒI,EOFNếu không thể gửi sợi dây.

    int pqputline (PGConn *Conn,
                  const char *chuỗi);

    Lưu ý Ứng dụng phải gửi rõ ràng hai ký tự\.Trên dòng cuối cùng đến chỉ ra phần phụ trợ rằng nó đã gửi xong dữ liệu.

  • pqputnbytesGửi a Chuỗi không cách đọc kèo bóng đá thúc không null vào máy chủ phụ trợ. Trả về 0 Nếu ok,EOFNếu không thể gửi sợi dây.

    int pqputnbytes (pgconn *Conn,
                    const char *bộ đệm,
                    int nbytes);

    Điều này giống hệtpqputline, ngoại trừ bộ đệm dữ liệu cần không bị cách đọc kèo bóng đá thúc vì số lượng byte gửi là được chỉ định trực tiếp.

  • PQENDCOPYĐồng bộ hóa với phụ trợ. Chức năng này đợi cho đến khi phần phụ trợ có Hoàn thành bản cách đọc kèo bóng đá. Nó nên được ban hành khi cái cuối cùng Chuỗi đã được gửi đến phần phụ trợ bằngpqputlinehoặc khi chuỗi cuối cùng được nhận được từ phần phụ trợ bằng cách đọc kèo bóng đá sử dụngPGGetLine. Nó phải được phát hành hoặc phụ trợ có thể nhận được"Out of Sync"với phía trước. Khi trở về từ chức năng này, phần phụ trợ là Sẵn sàng nhận cách đọc kèo bóng đá SQL tiếp theo. Giá trị trả về là 0 Khi hoàn thành thành công, khác không.

    int pqendcopy (pgconn *Conn);

    làm ví dụ:

    PQEXEC (Conn, "Tạo Bảng FOO (A Int4, B Char (16), D Double Precision)");
    PQEXEC (Conn, "cách đọc kèo bóng đá foo từ stdin");
    Pqputline (Conn, "3 \ Thello World \ t4.5 \ n");
    Pqputline (Conn, "4 \ tgoodbye World \ t7.11 \ n");
    ...
    Pqputline (Conn, "\. \ N");
    Pqendcopy (Conn);

Khi sử dụngPQGetResult, The Ứng dụng sẽ trả lờiPGRES_COPY_OUTcách đọc kèo bóng đá quả bằng cách thực thiPQGetLineCàng lặp đi lặp lại, theo sau làPQENDCOPYSau khi thấy dòng Terminator được nhìn thấy. Nó sau đó sẽ trở lạiPQGetResultVòng lặp cho đến khiPQGetResultTrả về null. Tương tự APGRES_COPY_INcách đọc kèo bóng đá quả được xử lý bởi A sê -ripqputlineCuộc gọi theo sau quaPQENDCOPY, sau đó quay lạiPQGetResultVòng lặp. Sự sắp xếp này sẽ đảm bảo rằng một lệnh cách đọc kèo bóng đá hoặc cách đọc kèo bóng đá ra lệnh sê -riSQLcách đọc kèo bóng đá lệnh sẽ được được thực hiện chính xác.

Các ứng dụng cũ có khả năng gửi một bản sao hoặc cách đọc kèo bóng đá ra thông quaPQEXECvà giả sử rằng Giao dịch được thực hiện sauPQENDCOPY. Điều này sẽ hoạt động chính xác chỉ khi cách đọc kèo bóng đá vào/ra là duy nhấtSQLcách đọc kèo bóng đá trong chuỗi cách đọc kèo bóng đá.