Phần này chứa một ví dụ rất đơn giản về việc sử tỷ lệ kèo bóng đá tối nayng SPI. Quy trìnhEXECQ
lấy lệnh SQL làm đối số đầu tiên và một hàng được tính là thứ hai, thực thi lệnh bằng cách sử tỷ lệ kèo bóng đá tối nayng10909_10919
và trả về số lượng hàng được xử lý theo tỷ lệ kèo bóng đá tối naynh. Bạn có thể tìm thấy các ví dụ phức tạp hơn cho SPI trong cây nguồn trongsrc/test/regress/repress.c
và trongSPIMô -đun.
#include "Postgres.h" #include "Executor/spi.h" #include "Utils/buildins.h" #ifdef pg_module_magic Pg_module_magic; #endif Pg_function_info_v1 (exec); Mốc thời gian EXECQ (PG_FUNCTION_ARGS) lệnh char *; int cnt; int ret; UInt64 Proc; / * Chuyển đổi đối tượng văn tỷ lệ kèo bóng đá tối nay đã cho thành chuỗi C */ lệnh = text_to_cstring (pg_getarg_text_pp (0)); cnt = pg_getarg_int32 (1); Spi_connect (); ret = spi_exec (lệnh, cnt); Proc = spi_proced; /* * Nếu một số hàng được tìm nạp, hãy in chúng qua ELOG (thông tin). */ if (ret 0 && spi_tuptable! = null) Tupledesc tupdesc = spi_tuptable- tupdesc; Spitupletable *TUPTABLE = spi_tuptable; char buf [8192]; uint64 j; for (j = 0; j <proc; j ++) Nặng tuple = tupsable- vals [j]; int i; 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); Pg_return_int64 (Proc);
12506_12608Phần 37.9.5.):
Tạo hàm EXECQ (Text, Integer) Trả về Int8
BẰNG 'FileName
'
Ngôn ngữ C nghiêm ngặt;
Đây là phiên mẫu:
12979_14516