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

SPI_EXECUTE

spi_execute - kèo bóng đá euro lệnh

Synopsis

int spi_execute (const char *kèo bóng đá euro, Boolread_only, dàiĐếm)

Mô tả

SPI_EXECUTEkèo bóng đá euro lệnh SQL được chỉ định choĐếmhàng. Nếu nhưread_only10248_10254, lệnh phải chỉ đọc và chi phí kèo bóng đá euro bị giảm một chút.

Hàm này chỉ có thể được gọi từ hàm C được kết nối.

nếuĐếmbằng 0 thì lệnh được kèo bóng đá euro cho tất cả các hàng mà nó áp dụng. Nếu nhưĐếmlớn hơn 0, thì không quáĐếmHàng sẽ được truy xuất; kèo bóng đá euro hiện dừng khi đạt được số đếm, giống như thêm mộtgiới hạnmệnh đề cho truy vấn. Ví dụ,

spi_execute ("chọn * từ foo", true, 5);

sẽ lấy lại tối đa 5 hàng từ bảng. Lưu ý rằng giới hạn như vậy chỉ có hiệu lực khi lệnh kèo bóng đá euro sự trả về hàng. Ví dụ,

spi_execute ("chèn vào foo chọn * từ thanh", false, 5);

Chèn tất cả kèo bóng đá euro hàng từBar, bỏ quaĐếmTham số. Tuy nhiên, với

spi_execute ("chèn vào foo chọn * từ thanh trả lại *", false, 5);

nhiều nhất là 5 hàng sẽ được chèn, vì việc kèo bóng đá euro sẽ dừng sau lần thứ nămTrở vềHàng kết quả được truy xuất.

Bạn có thể truyền nhiều kèo bóng đá euro trong một chuỗi;SPI_EXECUTETrả về kết quả cho lệnh được kèo bóng đá euro cuối cùng. TheĐếmGiới hạn áp dụng cho mỗi lệnh một cách riêng biệt (mặc dù chỉ có kết quả cuối cùng sẽ kèo bóng đá euro sự được trả về). Giới hạn không được áp dụng cho bất kỳ lệnh ẩn nào được tạo bởi các quy tắc.

Khiread_onlySai, SPI_EXECUTETăng bộ đếm kèo bóng đá euro và tính toán mớiSnapshotTrước khi kèo bóng đá euro mỗi lệnh trong chuỗi. Ảnh chụp không thực sự thay đổi nếu mức cách ly giao dịch hiện tại làserializablehoặcĐọc lặp lại, nhưng trongĐọc cam kếtChế độ Cập nhật ảnh chụp nhanh cho phép mỗi kèo bóng đá euro xem kết quả của các giao dịch mới cam kết từ các phiên khác. Điều này rất cần thiết cho hành vi nhất quán khi các kèo bóng đá euro đang sửa đổi cơ sở dữ liệu.

Khiread_onlyTRUE, SPI_EXECUTEKhông cập nhật ảnh chụp nhanh hoặc bộ đếm kèo bóng đá euro và nó chỉ cho phép đơn giảnChọnCác lệnh xuất hiện trong chuỗi lệnh. Các lệnh được kèo bóng đá euro bằng cách sử dụng ảnh chụp nhanh được thiết lập trước đó cho truy vấn xung quanh. Chế độ kèo bóng đá euro này nhanh hơn một chút so với chế độ đọc/ghi do loại bỏ chi phí trên mỗi lệnh. Nó cũng cho phép thực sựổn địnhCác chức năng sẽ được xây dựng: Vì các kèo bóng đá euro liên tiếp sẽ sử dụng cùng một ảnh chụp nhanh, sẽ không có thay đổi nào trong kết quả.

Nói chung là không khôn ngoan khi trộn các lệnh chỉ đọc và đọc-ghi trong một chức năng bằng SPI; Điều đó có thể dẫn đến hành vi rất khó hiểu, vì các truy vấn chỉ đọc sẽ không thấy kết quả của bất kỳ bản cập nhật cơ sở dữ liệu nào được kèo bóng đá euro hiện bởi các truy vấn đọc-ghi.

Số lượng hàng thực tế mà lệnh (cuối cùng) được kèo bóng đá euro được trả về trong biến toàn cầuSPI_Proced. Nếu giá trị trả về của hàm là13835_13850, spi_ok_insert_returning, spi_ok_delete_returninghoặcspi_ok_update_returning, thì bạn có thể sử dụng con trỏ toàn cầuSpitupletable *spi_tuptableĐể truy cập các hàng kết quả. Một số kèo bóng đá euro tiện ích (chẳng hạn nhưGiải thích) cũng trả về kèo bóng đá euro bộ hàng vàSPI_TUPTABLEcũng sẽ chứa kết quả trong những trường hợp này. Một số kèo bóng đá euro tiện ích (Copy, Tạo bảng dưới dạng) không trả lại một bộ hàng, vì vậySPI_TUPTABLElà null, nhưng chúng vẫn trả về số lượng hàng được xử lý trongSPI_Proced.

Cấu trúcSpitupletableđược xác định như vậy:

typedef struct Spitupletable

    / * Thành viên công cộng */
    Tuppledesc Tupdesc;        / * mô tả tuple */
    Nặng trĩu *vals;           / * mảng kèo bóng đá euro bộ dữ liệu */
    Uint64 Numvals;        / * Số lượng kèo bóng đá euro bộ dữ liệu hợp lệ */

    / * Thành viên tư nhân, không dành cho người gọi bên ngoài */
    UInt64 được phân bổ;        / * Độ dài được phân bổ của mảng vals */
    MemoryContext Tuptabcxt;    / * bối cảnh bộ nhớ của bảng kết quả */
    slist_node tiếp theo;           / * Liên kết cho sổ sách kế toán nội bộ */
    Subtransactionid subid;     / * subxact trong đó có thể tạo được *//
 Spitupletable;

kèo bóng đá euro trườngTUPDESC, 15405_15411numvalsCó thể được sử dụng bởi người gọi SPI; kèo bóng đá euro trường còn lại là nội bộ.Valslà một loạt kèo bóng đá euro con trỏ đến kèo bóng đá euro hàng. Số lượng hàng được đưa ra bởinumvals(Vì lý do lịch sử, số lượng này cũng được trả lại trongSPI_Proced).TUPDESClà một mô tả hàng mà bạn có thể chuyển đến kèo bóng đá euro chức năng SPI liên quan đến hàng.

spi_finishGiải phóng tất cảSpitupletableS được phân bổ trong hàm C hiện tại. Bạn có thể giải phóng một bảng kết quả cụ thể trước đó, nếu bạn đã hoàn thành nó, bằng cách gọispi_freetupable.

Đối số

const char *kèo bóng đá euro

Chuỗi chứa lệnh để kèo bóng đá euro

boolread_only

TRUEđể kèo bóng đá euro chỉ đọc

LongĐếm

Số lượng hàng tối đa để trả về hoặc0không giới hạn

Giá trị trả lại

Nếu việc kèo bóng đá euro hiện lệnh thành công thì một trong các giá trị (không âm) sau đây sẽ được trả về:

spi_ok_select

Nếu AChọn(nhưng khôngChọn vào) đã được kèo bóng đá euro

spi_ok_selinto

Nếu AChọn vàođã được kèo bóng đá euro

spi_ok_insert

Nếu mộtChènĐã được kèo bóng đá euro

spi_ok_delete

Nếu AXóađã được kèo bóng đá euro

18145_18160

Nếu mộtCập nhậtđã được kèo bóng đá euro

spi_ok_merge

Nếu AHợp nhấtđã được kèo bóng đá euro

spi_ok_insert_returning

Nếu mộtChèn trả lạiđã được kèo bóng đá euro hiện

spi_ok_delete_returning

Nếu AXóa trả vềĐã được kèo bóng đá euro hiện

spi_ok_update_returning

Nếu mộtCập nhật trả về19037_19052

spi_ok_utility

Nếu kèo bóng đá euro tiện ích (ví dụ:Tạo bảng) đã được kèo bóng đá euro

spi_ok_rewritten

Nếu kèo bóng đá euro được viết lại thành một loại kèo bóng đá euro khác (ví dụ:Cập nhậttrở thành mộtChèn) bởi Aquy tắc.

19688_19749

spi_error_argument

nếukèo bóng đá euronullhoặcĐếmnhỏ hơn 0

spi_error_copy

nếuSao chép vào stdouthoặcSao chép từ StdinĐã được cố gắng

spi_error_transaction

Nếu một kèo bóng đá euro thao tác giao dịch đã được thử (bắt đầu, cam kết, rollback, SavePoint, Chuẩn bị giao dịch, Cam kết đã chuẩn bị, Chuẩn bị rollbackhoặc bất kỳ biến thể nào của chúng)

spi_error_opunknown

Nếu loại kèo bóng đá euro không xác định (không nên xảy ra)

spi_error_unconnected

Nếu được gọi từ hàm C không kết nối

Ghi chú

Tất cả các chức năng kèo bóng đá euro hiện truy vấn SPI được đặtSPI_ProcedSPI_TUPTABLE(chỉ là con trỏ, không phải nội dung của cấu trúc). Lưu hai biến toàn cầu này vào kèo bóng đá euro biến hàm C cục bộ nếu bạn cần truy cập bảng kết quả củaSPI_EXECUTEhoặc chức năng kèo bóng đá euro hiện truy vấn khác qua các cuộc gọi sau.

Gửi hiệu chỉnh

22617_22843Mẫu nàyĐể báo cáo vấn đề tài liệu.