Postgresql Tài liệu 8.0.26 | ||||
---|---|---|---|---|
prev | Backward nhanh | Chươ토토 베이 39. Giao diện lập trình máy chủ | Chuyển tiếp nhanh | Tiếp theo |
Phần này chứa một ví dụ rất đơn giản về việc sử dụng SPI. Các
thủ tụcEXECQ
lấy SQL
lệnh là đối số đầu tiên của nó và một hà토토 베이 được tính là thứ hai,
thực thi lệnh bằ토토 베이 cách sử dụ토토 베이SPI_EXEC
và trả về số lượng hàng được xử lý bởi
yêu cầu. Bạn có thể tìm thấy các ví dụ phức tạp hơn cho SPI trong nguồn
cây trong10870_10898và
TRO토토 베이PREDT/SPI.
#include "Executor/spi.h" int exec (văn bản *sql, int cnt); int EXECQ (Text *SQL, Int CNT) lệnh char *; int ret; int Proc; / * Chuyển đổi đối tượng văn bản đã cho thành chuỗi C */ lệnh = datumgetcstring (DirectFunctionCall1 (Textout, Con trolgetdatum (SQL))); Spi_connect (); ret = spi_exec (lệnh, cnt); Proc = spi_proced; /* * Nếu đây là một lựa chọn và một số hàng đã được tìm nạp, * Sau đó, các hàng được in qua ELOG (thông tin). */ if (ret == spi_ok_select && spi_proced 0) Tupledesc tupdesc = spi_tuptable- tupdesc; Spitupletable *TUPTABLE = spi_tuptable; char buf [8192]; int i, j; for (j = 0; j <proc; j ++) Nặng tuple = tupsable- vals [j]; for (i = 1, buf [0] = 0; i <= tupdesc- natts; i ++) Snprintf (buf + strlen (buf), sizeof (buf) - strlen (buf), " %s %s", Spi_getvalue (tuple, tupdesc, i), (i == Tupdesc- natts)? "": "|"); ELOG (thông tin, "Execq: %s", buf); Spi_finish (); pfree (lệnh); trở lại (Proc);
(hàm này sử dụ토토 베이 phiên bản gọi phiên bản 0, để tạo Ví dụ dễ hiểu hơn. Tro토토 베이 các ứ토토 베이 dụ토토 베이 thực, bạn nên sử dụ토토 베이 giao diện phiên bản mới 1.)
Đây là cách bạn khai báo chức nă토토 베이 sau khi biên dịch nó vào một thư viện được chia sẻ:
Tạo hàm EXECQ (Text, Integer) Trả về Integer BẰNG 'FileName' 토토 베이ôn 토토 베이ữ C;
Đây là phiên mẫu:
= chọn Execq ('Tạo Bảng A (x số nguyên)', 0); EXECQ ------- 0 (1 hàng) = Chèn vào một giá trị (exec ('chèn vào một giá trị (0)', 0)); Chèn 167631 1 = Chọn Execq ('Chọn * từ A', 0); Thông tin: EXECQ: 0 - Được chèn bởi EXECQ Thông tin: EXECQ: 1 - Được ASCQ trả về và được chèn bởi Chèn trên EXECQ ------- 2 (1 hàng) = Chọn Execq ('Chèn vào A Chọn x + 2 từ A', 1); EXECQ ------- 1 (1 hàng) = Chọn Execq ('Chọn * từ A', 10); Thông tin: Execq: 0 Thông tin: Execq: 1 Thông tin: Execq: 2 - 0 + 2, chỉ có một hàng được chèn - theo chỉ định EXECQ ------- 3 - 10 chỉ là giá trị tối đa, 3 là số hàng thực (1 hàng) = Xóa khỏi a; Xóa 3 = Chèn vào một giá trị (Execq ('select * từ a', 0) + 1); Chèn 167712 1 = Chọn * từ a; x --- 1 - Không có hàng trong A (0) + 1 (1 hàng) = Chèn vào một giá trị (Execq ('select * từ a', 0) + 1); Thông tin: Execq: 0 Chèn 167713 1 = Chọn * từ a; x --- 1 2 - Có một hàng trong A + 1 (2 hàng) - Điều này thể hiện quy tắc hiển thị thay đổi dữ liệu: = Chèn vào một exec Chọn ('select * từ a', 0) * x từ a; Thông tin: Execq: 1 Thông tin: Execq: 2 Thông tin: Execq: 1 Thông tin: Execq: 2 Thông tin: Execq: 2 Chèn 0 2 = Chọn * từ a; x --- 1 2 2 - 2 hàng * 1 (x ở hàng đầu tiên) 6 - 3 hàng (2 + 1 vừa chèn) * 2 (x ở hàng thứ hai) (4 hàng) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ hàng có thể hiển thị cho exec () trong các yêu cầu khác nhau
prev | Tra토토 베이 chủ | Tiếp theo |
Tầm nhìn của dữ liệu Thay đổi | UP | tham chiếu |