spi_execute - thực thi tỷ lệ kèo bóng đá
int spi_execute (const char *tỷ lệ kèo bóng đá
, Boolread_only
, dàiĐếm
)
SPI_EXECUTE
Thực thi tỷ lệ kèo bóng đá SQL được chỉ định choĐếm
hàng. Nếu nhưread_only
làTrue
, tỷ lệ kèo bóng đá phải chỉ đọc và chi phí thực thi 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Đếm
bằng 0 thì tỷ lệ kèo bóng đá được thực thi cho tất cả các hàng mà nó áp dụng. Nếu nhưĐếm
lớn hơn 0, thì không quáĐếm
hàng sẽ được truy xuất; tỷ lệ kèo bóng đá hiện dừng khi đạt được số đếm, giống như thêm mộtgiới hạn
mệnh đề cho truy vấn. Ví dụ,
spi_execute ("chọn * từ foo", true, 5);
Sẽ lấy lại nhiều nhất 5 hàng từ bảng. Lưu ý rằng giới hạn như vậy chỉ có hiệu lực khi tỷ lệ kèo bóng đá thực sự trả về hàng.
SPI_EXECUTE ("Chèn vào foo select * từ thanh", false, 5);
Chèn tất cả các hàng từBar
, bỏ quaĐếm
Tham 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ào, vì việc tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá trong một chuỗi;SPI_EXECUTE
Trả về kết quả cho tỷ lệ kèo bóng đá được thực thi cuối cùng. TheĐếm
Giới hạn áp dụng cho mỗi tỷ lệ kèo bóng đá riêng biệt (mặc dù chỉ có kết quả cuối cùng sẽ thực sự được trả về). Giới hạn không được áp dụng cho bất kỳ tỷ lệ kèo bóng đá ẩn nào được tạo bởi các quy tắc.
Khiread_only
làSai
, SPI_EXECUTE
Tăng bộ đếm tỷ lệ kèo bóng đá và tính toán mớiSnapshotTrước khi thực thi mỗi tỷ lệ kèo bóng đá 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àserializable
hoặcĐọc lặp lại
, nhưng trongĐọc cam kết
Chế độ Cập nhật ảnh chụp nhanh cho phép mỗi tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá đang sửa đổi cơ sở dữ liệu.
Khiread_only
làTRUE
, SPI_EXECUTE
Không cập nhật ảnh chụp nhanh hoặc bộ đếm tỷ lệ kèo bóng đá và nó chỉ cho phép đơn giảnChọn
Các tỷ lệ kèo bóng đá xuất hiện trong chuỗi tỷ lệ kèo bóng đá. Các tỷ lệ kèo bóng đá được thực thi bằng cách sử dụng ảnh chụp nhanh được thiết lập trước đó cho truy vấn xung quanh.ổn địnhCác chức năng sẽ được xây dựng: Vì các tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá chỉ đọc và đọc-viết 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 thực hiện bởi các truy vấn đọc-ghi.
Số lượng hàng thực tế mà tỷ lệ kèo bóng đá (cuối cùng) được thực thi được trả về trong biến toàn cầuSPI_Proced
. Nếu giá trị trả về của hàm làspi_ok_select
, spi_ok_insert_returning
, spi_ok_delete_returning
hoặ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ố tỷ lệ kèo bóng đá tiện ích (chẳng hạn nhưGiải thích
) cũng trả về các bộ hàng vàspi_tupable
cũng sẽ chứa kết quả trong những trường hợp này. Một số tỷ lệ kèo bóng đá 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_TUPTABLE
là 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
Các trườngTUPDESC
, Vals
vànumvals
có thể được sử dụng bởi người gọi SPI; các trường còn lại là nội bộ.Vals
là một loạt các con trỏ đến các 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
).TUPDESC
là một mô tả hàng mà bạn có thể chuyển đến các chức năng SPI liên quan đến hàng.
spi_finish
Giải phóng tất cảSpitupletable
S đượ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
.
const char *tỷ lệ kèo bóng đá
Chuỗi chứa tỷ lệ kèo bóng đá để thực thi
boolread_only
TRUE
để tỷ lệ kèo bóng đá hiện chỉ đọc
LongĐếm
Số lượng hàng tối đa để trả về hoặc0
không giới hạn
Nếu việc thực hiện tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá
spi_ok_selinto
Nếu AChọn vào
đã được tỷ lệ kèo bóng đá
spi_ok_insert
Nếu mộtChèn
đã được tỷ lệ kèo bóng đá
spi_ok_delete
Nếu AXóa
đã được tỷ lệ kèo bóng đá
SPI_OK_UPDATE
Nếu mộtCập nhật
đã được tỷ lệ kèo bóng đá
spi_ok_insert_returning
Nếu mộtChèn trả lại
Đã được tỷ lệ kèo bóng đá
spi_ok_delete_returning
Nếu AXóa trả về
đã được tỷ lệ kèo bóng đá
spi_ok_update_returning
Nếu mộtCập nhật trả về
Đã được tỷ lệ kèo bóng đá hiện
SPI_OK_UTILE
Nếu tỷ lệ kèo bóng đá tiện ích (ví dụ:Tạo bảng
) đã được tỷ lệ kèo bóng đá
spi_ok_rewritten
Nếu tỷ lệ kèo bóng đá được viết lại thành một loại tỷ lệ kèo bóng đá khác (ví dụ:Cập nhật
Trở thành mộtChèn
) bởi Aquy tắc.
Khi lỗi, một trong các giá trị âm sau được trả về:
spi_error_argument
nếutỷ lệ kèo bóng đá
lànull
hoặcCount
nhỏ hơn 0
spi_error_copy
nếuSao chép vào stdout
hoặcSao chép từ Stdin
Đã được cố gắng
spi_error_transaction
Nếu một tỷ lệ kèo bóng đá 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ị rollback
hoặc bất kỳ biến thể nào của chúng)
spi_error_opunknown
Nếu loại tỷ lệ kèo bóng đá 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
21184_21229SPI_Proced
vàspi_tupable
(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 các biến hàm C cục bộ nếu bạn cần truy cập bảng kết quả củaSPI_EXECUTE
hoặc một chức năng tỷ lệ kèo bóng đá hiện truy vấn khác qua các cuộc gọi sau.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài liệu.