Truy cập vào cơ sở dữ liệu từ chức tỷ lệ kèo bóng đá Perl của bạn có thể được thực hiện thông qua các chức tỷ lệ kèo bóng đá sau:
spi_exec_query
(Truy vấn
[,Max-Rows
])
spi_exec_query
Thực thi tỷ lệ kèo bóng đánh SQL và trả về toàn bộ hàng được đặt làm tham chiếu đến một mảng tham chiếu băm.Bạn chỉ nên sử dụng tỷ lệ kèo bóng đánh này khi bạn biết rằng tập kết quả sẽ tương đối nhỏ.Đây là một ví dụ về truy vấn (Chọn
tỷ lệ kèo bóng đánh) với số lượng hàng tối đa tùy chọn:
$ rv = spi_exec_query ('select * from my_table', 5);
Điều này trả về tối đa 5 hàng từ bảngmy_table
. Nếu nhưmy_table
có cộtmy_column
10992_11028$ i
của kết quả như thế này:
$ foo = $ rv- hàng [$ i]- my_column;
Tổng số hàng được trả về từ AChọn
Truy vấn có thể được truy cập như thế này:
$ NROWS = $ RV- đã xử lý
Đây là một ví dụ sử dụng loại tỷ lệ kèo bóng đánh khác:
$ query = "chèn vào các giá trị my_table (1, 'test')"; $ rv = spi_exec_query ($ query);
Sau đó, bạn có thể truy cập trạng thái tỷ lệ kèo bóng đánh (ví dụ:spi_ok_insert
) Như thế này:
$ res = $ rv- status;
Để có số lượng hàng bị ảnh hưởng, làm:
$ NROWS = $ RV- đã xử lý;
Đây là một ví dụ hoàn chỉnh:
11859_12603
spi_query (tỷ lệ kèo bóng đánh
)
spi_fetchrow (con trỏ
)
spi_cursor_close (con trỏ
)
spi_query
vàspi_fetchrow
Làm việc cùng nhau như một cặp cho các bộ hàng có thể lớn hoặc cho các trường tỷ lệ kèo bóng đá bạn muốn trả lại hàng khi chúng đến.spi_fetchrow
Workschỉvớispi_query
. Ví dụ sau minh họa cách bạn sử dụng chúng cùng nhau:
13773_14637
Thông thường,spi_fetchrow
nên được lặp lại cho đến khi nó trả vềUndef
, chỉ ra rằng không có nhiều hàng để đọc. Con trỏ được trả về bởispi_query
được tự động giải phóng khispi_fetchrow
returnUndef
14993_15051spi_cursor_close
Để giải phóng con trỏ. Không làm như vậy sẽ dẫn đến rò rỉ bộ nhớ.
spi_prepare (tỷ lệ kèo bóng đánh
, Các loại đối số
)
spi_query_prepared (kế hoạch
, Đối số
)
SPI_EXEC_PREPARED (kế hoạch
[,thuộc tính
],Đối số
)
SPI_FreePlan (Plan
)
spi_prepare
, spi_query_prepared
, SPI_EXEC_PREPARED
vàSPI_FreePlan
Thực hiện cùng một chức tỷ lệ kèo bóng đá nhưng đối với các truy vấn đã chuẩn bị.spi_prepare
Chấp nhận chuỗi truy vấn với trình giữ chỗ đối số được đánh số ($ 1, $ 2, v.v.) và danh sách chuỗi các loại đối số:
$ plan = spi_prepare ('chọn * từ kiểm tra trong đó id $ 1 và tên = $ 2', 'Integer', 'text');
Một khi kế hoạch truy vấn được chuẩn bị bằng một cuộc gọi đếnspi_prepare
, gói có thể được sử dụng thay vì truy vấn chuỗi, trongSPI_EXEC_PREPARED
, trong đó kết quả giống như được trả về bởispi_exec_query
hoặc trongspi_query_prepared
17278_17315SPI_Query
không, sau đó có thể được chuyển chospi_fetchrow
. Tham số thứ hai tùy chọn đểSPI_EXEC_PREPARED
là một tham chiếu băm của các thuộc tính; thuộc tính duy nhất hiện được hỗ trợ làgiới hạn
, đặt số lượng hàng tối đa được trả về bởi một truy vấn.
Ưu điểm của các truy vấn đã chuẩn bị là có thể sử dụng một kế hoạch chuẩn bị cho nhiều hơn một lần thực hiện truy vấn. Sau khi kế hoạch không cần thiết nữa, nó có thể được giải phóng bằngSPI_FreePlan
:
Tạo hoặc thay thế hàm init () trả về void dưới dạng $$ $ _Shared my_plan = spi_prepare ('select (now () + $ 1) :: ngày như bây giờ', 'Khoảng'); $$ Ngôn ngữ plperl; Tạo hoặc thay thế hàm add_time (khoảng) trả về văn bản dưới dạng $$ trả về spi_exec_prepared ( $ _Shared my_plan, $ _ [0] )- hàng- [0]- bây giờ; $$ Ngôn ngữ plperl; Tạo hoặc thay thế chức tỷ lệ kèo bóng đá đã hoàn thành () trả về void dưới dạng $$ spi_freeplan ($ _shared my_plan); Undef $ _Shared my_plan; $$ Ngôn ngữ plperl; Chọn init (); Chọn add_time ('1 ngày'), add_time ('2 ngày'), add_time ('3 ngày'); Chọn xong (); add_time | add_time | add_time ------------+------------+------------ 2005-12-10 | 2005-12-11 | 2005-12-12
Lưu ý rằng chỉ số tham số trongspi_prepare
được xác định thông qua $ 1, $ 2, $ 3, v.v.
18944_19008SPI_EXEC_PREPARED
:
Tạo máy chủ bảng làm ID chọn, ('192.168.1.' || id) :: Inet dưới dạng địa chỉ Từ Generate_Series (1,3) dưới dạng ID; Tạo hoặc thay thế chức tỷ lệ kèo bóng đá init_hosts_query () trả về void dưới dạng $$ $ _Shared pern = spi_prepare ('select * từ máy chủ Trong đó địa chỉ << $ 1 ',' inet '); $$ Ngôn ngữ plperl; Tạo hoặc thay thế chức tỷ lệ kèo bóng đá Query_hosts (INET) Trả về máy chủ Setof dưới dạng $$ trả về spi_exec_prepared ( $ _Shared plan, giới hạn = 2, $ _ [0] )- hàng; $$ Ngôn ngữ plperl; Tạo hoặc thay thế chức tỷ lệ kèo bóng đá release_hosts_query () trả về void dưới dạng $$ spi_freeplan ($ _ chia sẻ span); Undef $ _Shared plan; $$ Ngôn ngữ plperl; Chọn init_hosts_query (); Chọn query_hosts ('192.168.1.0/30'); Chọn release_hosts_query (); Query_hosts ----------------- (1.192.168.1.1) (2.192.168.1.2) (2 hàng)
ELOG (cấp
, MSG
)
phát ra thông báo nhật ký hoặc lỗi. Các cấp độ có thể làDebug
, log
, INFO
, Thông báo
, Cảnh báo
vàERROR
. ERROR
làm tăng tình trạng lỗi; Nếu điều này không bị mắc kẹt bởi mã Perl xung quanh, lỗi sẽ truyền ra truy vấn gọi, khiến giao dịch hiện tại hoặc trừ bị hủy bỏ. Điều này thực sự giống như perlDie
tỷ lệ kèo bóng đánh. Các cấp độ khác chỉ tạo ra các thông điệp của các cấp độ ưu tiên khác nhau. Cho dù các thông điệp của một ưu tiên cụ thể được báo cáo cho máy khách, được ghi vào nhật ký máy chủ hay cả hai đều được điều khiển bởilog_min_messagesvàclient_min_messagesBiến cấu hình. Nhìn thấyChương 19Để biết thêm thông tin.
quote_literal (chuỗi
)
Trả về chuỗi đã cho được trích dẫn phù tỷ lệ kèo bóng đá để được sử dụng như một chuỗi theo nghĩa đen trong chuỗi câu lệnh SQL. Các trích dẫn đơn và dấu gạch chéo được nhúng được nhân đôi đúng cách. Lưu ý rằngquote_literal
Trả về Undef trên đầu vào Undef; Nếu đối số có thể là hoàn tác,QUOTE_NULLABLE
thường phù tỷ lệ kèo bóng đá hơn.
QUOTE_NULLABLE (chuỗi
)
Trả về chuỗi đã cho được trích dẫn phù tỷ lệ kèo bóng đá để được sử dụng như một chuỗi theo nghĩa đen trong chuỗi câu lệnh SQL; Hoặc, nếu đối số không hoàn hảo, hãy trả lại chuỗi "NULL" chưa được trích xuất. Các tài liệu đơn và dấu gạch chéo được nhúng được nhân đôi đúng cách.
quote_ident (chuỗi
)
Trả về chuỗi đã cho được trích dẫn phù tỷ lệ kèo bóng đá để được sử dụng làm định danh trong chuỗi câu lệnh SQL. Báo giá chỉ được thêm vào nếu cần thiết (nghĩa là, nếu chuỗi chứa các ký tự không nhận dạng hoặc sẽ được xếp lại trường tỷ lệ kèo bóng đá). Báo giá nhúng được nhân đôi đúng cách.
decode_bytea (chuỗi
)
23536_23636bytea
được mã hóa.
encode_bytea (chuỗi
)
Trả lạibytea
Mẫu được mã hóa của nội dung dữ tỷ lệ kèo bóng đá nhị phân của chuỗi đã cho.
encode_array_literal (mảng
)
encode_array_literal (mảng
, Delimiter
)
Trả về nội dung của mảng được tham chiếu dưới dạng chuỗi ở định dạng mảng (xem24692_24713). Trả về giá trị đối số không thay đổi nếu nó không phải là một tham chiếu đến một mảng. Phân định được sử dụng giữa các phần tử của mặc định theo nghĩa đen của mảng thành ",
"Nếu một dấu phân cách không được chỉ định hoặc không được chỉ định.
encode_typed_literal (giá trị
, typename
)
Chuyển đổi biến Perl thành giá trị của kiểu dữ liệu được truyền dưới dạng đối số thứ hai và trả về biểu diễn chuỗi của giá trị này. Xử lý chính xác các mảng và giá trị của các loại tổng tỷ lệ kèo bóng đá.
encode_array_constructor (mảng
)
Trả về nội dung của mảng được tham chiếu dưới dạng chuỗi ở định dạng trình xây dựng mảng (xemPhần 4.2.12). Các giá trị riêng lẻ được trích dẫn bằng cách sử dụngquote_nullable
. Trả về giá trị đối số, được trích dẫn bằngquote_nullable
, nếu nó không phải là tham chiếu đến một mảng.
looking_like_number (chuỗi
)
26426_26628INF
vàVô cực
được coi là số.
is_array_ref (Đối số
)
Trả về giá trị thực nếu đối số đã cho có thể được coi là tham chiếu mảng, nghĩa là, nếu tham chiếu của đối số làmảng
hoặcPostgresql :: Inserver :: mảng
. Trả về sai nếu không.