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
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ế.

SPI_EXECUTE

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

Synopsis

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

Mô tả

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

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

nếuĐếmbằng 0 thì lệnh được soi kèo bóng đá truoctran 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; soi kèo bóng đá truoctran 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ẽ truy xuất 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 soi kèo bóng đá truoctran 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ả các hàng từBar, bỏ quaĐếm11560_11587

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

nhiều nhất là 5 hàng sẽ được chèn vào, vì việc soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran trong một chuỗi;SPI_EXECUTETrả về kết quả cho lệnh được soi kèo bóng đá truoctran cuối cùng. TheĐếmGiới hạn áp dụng cho mỗi lệnh riêng biệt (mặc dù chỉ có kết quả cuối cùng sẽ soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran và tính toán mớiSnapshotTrước khi soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đ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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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ế độ soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đượ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_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ố soi kèo bóng đá truoctran tiện ích (chẳng hạn nhưGiải thích) cũng trả về các bộ hàng vàspi_tupablecũng sẽ chứa kết quả trong những trường hợp này. Một số soi kèo bóng đá truoctran 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.

14847_14863Spitupletableđược xác định như vậy:

14956_15275

Valslà một loạt các con trỏ đến các hàng. (Số lượng mục hợp lệ được đưa ra bởiSPI_Proced.)TUPDESClà 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.TUPTABCXT, được phân bổmiễn phílà các trường nội bộ không được sử dụng để sử dụng bởi người gọi SPI.

spi_finishGiải phóng tất cảSpitupletableS được phân bổ trong quy trình 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 *soi kèo bóng đá truoctran

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

boolread_only

TRUEđể soi kèo bóng đá truoctran hiện chỉ đọc

LongĐếm

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

16802_16816

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

spi_ok_select

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

spi_ok_selinto

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

spi_ok_insert

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

spi_ok_delete

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

SPI_OK_UPDATE

NếuCập nhậtđã được soi kèo bóng đá truoctran

spi_ok_insert_returning

Nếu một17919_17937đã được soi kèo bóng đá truoctran hiện

spi_ok_delete_returning

Nếu AXóa trả vềđã được soi kèo bóng đá truoctran

spi_ok_update_returning

Nếu mộtCập nhật trả vềđã được soi kèo bóng đá truoctran

SPI_OK_UTILE

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

spi_ok_rewritten

Nếu soi kèo bóng đá truoctran được viết lại thành một loại soi kèo bóng đá truoctran khác (ví dụ:Cập nhậtTrở 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ếusoi kèo bóng đá truoctrannullhoặ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 soi kèo bóng đá truoctran thao tác giao dịch đã được thử (bắt đầu, cam kết, rollback, 19695_19706, 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 soi kèo bóng đá truoctran không xác định (không nên xảy ra)

spi_error_unconnected

Nếu được gọi từ thủ tục không kết nối

Ghi chú

Tất cả các chức năng soi kèo bóng đá truoctran tế SPI truy vấn được đặt cảSPI_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 các biến thủ tụ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 soi kèo bóng đá truoctran hiện truy vấn khác qua các cuộc gọi sau.