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 kèo bóng đá pháp phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

kèo bóng đá phápSPI_EXECUTE

tên

9954_9999

Synopsis

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

Mô tả

SPI_EXECUTEthực thi kèo bóng đá pháp SQL được chỉ định choĐếmhàng. Nếu nhưread_onlytrue, kèo bóng đá pháp phải chỉ đọc và thực thi Chi phí giảm phần nào.

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

nếuĐếmlà 0 thì kèo bóng đá pháp được thực hiện cho tất cả các hàng mà nó áp dụng cho. Nếu nhưĐếmlớn hơn 0, sau đó số lượng hàng trong đó kèo bóng đá pháp sẽ được thực thi bị hạn chế (giống nhưGiới hạnmệnh đề). Ví dụ:

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

sẽ cho phép nhiều nhất 5 hàng được chèn vào bảng.

Bạn có thể chuyển nhiều kèo bóng đá pháp trong một chuỗi, nhưng sau đó Các kèo bóng đá pháp không thể phụ thuộc vào việc tạo các đối tượng sớm hơn trong chuỗi, vì toàn bộ chuỗi sẽ được phân tích cú pháp và kế hoạch Trước khi bắt đầu thực thi.SPI_EXECUTETrả về kết quả cho kèo bóng đá pháp thực hiện cuối cùng. TheĐếmGiới hạn áp dụng cho mỗi kèo bóng đá pháp một cách riêng biệt, nhưng nó không được áp dụng cho ẩn các kèo bóng đá pháp được tạo bởi các quy tắc.

Khiread_onlySai, SPI_EXECUTETăng bộ đếm kèo bóng đá pháp và tính toán một bộ đếm mớiSnapshot11936_12072serializable, nhưng trongĐọc TẬN TỤYChế độ Cập nhật ảnh chụp nhanh cho phép mỗi kèo bóng đá pháp Xem kết quả của các giao dịch mới cam kết từ các giao dịch khác phiên. Điều này là điều cần thiết cho hành vi nhất quán khi Các kèo bóng đá pháp đ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 đá pháp và nó chỉ cho phép đơn giảnChọnkèo bóng đá pháp đến xuất hiện trong chuỗi kèo bóng đá pháp. Các kèo bóng đá pháp được thực thi bằng cách sử dụng Snapshot được thiết lập trước đây cho truy vấn xung quanh. Cái này Chế độ thực thi có phần nhanh hơn chế độ đọc/ghi do loại bỏ trên đầu một kèo bóng đá pháp. Nó cũng cho phép thực sựỔn địnhkèo bóng đá pháp chức năng sẽ được xây dựng: Vì Tất cả kèo bóng đá pháp thực thi liên tiếp đều sẽ sử dụng cùng một ảnh chụp nhanh, sẽ có không thay đổi kết quả.

Nói chung là không khôn ngoan khi trộn chỉ đọc và đọc-viết các kèo bóng đá pháp trong một hàm duy nhất 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 Xem 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 read-write truy vấn.

Số lượng hàng thực tế mà kèo bóng đá pháp (cuối cùng) là được thực hiện được trả về trong biến toàn cầuSPI_Proced. Nếu giá trị trả về của hàm là13552_13567, spi_ok_insert_returning, spi_ok_delete_returninghoặcspi_ok_update_returning, sau đó bạn có thể sử dụng Con trỏ toàn cầuSpitupletable *Spi_tupableĐể truy cập các hàng kết quả. Một số tiện ích các kèo bóng đá pháp (chẳng hạn nhưGiải thích) cũng trở lại Hàng tập vàspi_tupable13983_14031

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

14149_14470

Valslà một loạt kèo bóng đá pháp con trỏ để 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ể vượt qua đến kèo bóng đá pháp chức năng SPI liên quan đến kèo bóng đá pháp hàng.TUPTABCXT, được phân bổmiễn phílà kèo bóng đá pháp 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 thời gian hiện tại thủ tục. Bạn có thể giải phóng một bảng kết quả cụ thể trước đó, nếu bạn được thực hiện với nó, bằng cách gọispi_freetupable.

Đối số

const char *kèo bóng đá pháp

Chuỗi chứa kèo bóng đá pháp để thực thi

boolread_only

TRUEcho chỉ đọc kèo bóng đá pháp

LongĐếm

Số lượng hàng tối đa để xử lý hoặc trả lại

giá trị trả về

Nếu việc thực thi kèo bóng đá pháp thành công thì một trong những Các giá trị sau (không âm) sẽ được trả về:

spi_ok_select

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

spi_ok_selinto

Nếu AChọn vàowas được thực hiện

spi_ok_insert

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

spi_ok_delete

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

SPI_OK_UPDATE

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

spi_ok_insert_returning

Nếu mộtChèn trả vềwas được thực hiện

spi_ok_delete_returning

Nếu AXóa trả vềwas được thực hiện

spi_ok_update_returning

Nếu mộtCập nhật trả vềwas được thực hiện

spi_ok_utility

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

spi_ok_rewritten

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

Khi lỗi, một trong kèo bóng đá pháp giá trị âm sau đây là đã trả về:

spi_error_argument

nếukèo bóng đá phápnullhoặcĐếmIS nhỏ 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 đá pháp 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 đó)

spi_error_opunknown

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

spi_error_unconnected

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

ghi chú

kèo bóng đá pháp chức năngSPI_EXECUTE, SPI_EXEC, SPI_EXECUTE_PLANSPI_EXECPThay đổi cảSPI_Procedspi_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 địa phương kèo bóng đá pháp biến thủ tục nếu bạn cần truy cập bảng kết quả củaSPI_EXECUTEhoặc một chức năng liên quan qua kèo bóng đá pháp cuộc gọi sau.