PostgreSQL: soi kèo bóng đá | |||
---|---|---|---|
prev | UP | Chương 42. PL/PERL - Ngôn ngữ thủ tục Perl | Tiếp theo |
Truy cập vào cơ sở dữ liệu từ tỷ lệ kèo bóng đá tối nay Perl của bạn có thể được thực hiện thông qua các tỷ lệ kèo bóng đá tối nay sau:
spi_exec_query
(Truy vấn[,Max-Rows])spi_exec_queryThực thi lệ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 lệ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ọnLệ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_tablecó cộtmy_column, bạn có thể nhận được giá trị đó từ hàng$ icủ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ọnTruy 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 lệnh khác:
$ query = "chèn vào tỷ lệ kèo bóng đá tối nay giá trị my_table (1, 'test')"; $ rv = spi_exec_query ($ query);
Sau đó, bạn có thể truy cập trạng thái lệnh (ví dụ:10802_10817) 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:
Tạo thử nghiệm bảng ( Tôi int, v varchar ); Chèn vào các giá trị kiểm tra (i, v) (1, 'dòng đầu tiên'); Chèn vào các giá trị kiểm tra (i, v) (2, 'dòng thứ hai'); Chèn vào các giá trị kiểm tra (i, v) (3, 'dòng thứ ba'); Chèn vào các giá trị kiểm tra (i, v) (4, 'bất tử'); Tạo hoặc thay thế tỷ lệ kèo bóng đá tối nay test_munge () trả về kiểm tra setof dưới dạng $$ $ rv của tôi = spi_exec_query ('chọn i, v từ thử nghiệm;'); $ status của tôi = $ rv- status; $ nROWS = $ RV- đã xử lý; foreach của tôi $ rn (0 .. $ nROWS - 1) $ row của tôi = $ rv- hàng [$ rn]; $ row- i += 200 nếu được xác định (hàng $- i); $ row- v = ~ tr/a-za-z/a-za-z/if (xác định ($ row- v)); return_next ($ hàng); trả lại Undef; $$ Ngôn ngữ plperl; Chọn * từ test_munge ();
spi_query (lệnh)
spi_fetchrow (con trỏ)
spi_cursor_close (12141_12149)
SPI_Queryvàspi_fetchrowLà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 đá tối nay bạn muốn trả lại hàng khi chúng đến.spi_fetchrowWorkschỉvớispi_query. Ví dụ sau minh họa cách bạn sử dụng chúng cùng nhau:
12599_13463
Thông thường,spi_fetchrow
Nên được lặp lại cho đến khi nó trở lạiUndef, 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. Nếu bạn không muốn đọc tất cả tỷ lệ kèo bóng đá tối nay hàng, thay vào đó hãy gọispi_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 (lệnh, tỷ lệ kèo bóng đá tối nay loại đối số)
spi_query_prepared (Plan, Đối số)
SPI_EXEC_PREPARED (kế hoạch[,thuộc tính],Đối số)
SPI_FreePlan (kế hoạch)
spi_prepare, spi_query_prepared, SPI_EXEC_PREPAREDvàSPI_FreePlanThực hiện cùng một tỷ lệ kèo bóng đá tối nay nhưng đối với các truy vấn đã chuẩn bị.spi_prepareChấ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 tỷ lệ kèo bóng đá tối nay loại đối số:
$ plan = spi_prepare ('chọn * từ kiểm tra trong đó id $ 1 và name = $ 2', 'Integer', 'text');
Một khi kế hoạch truy vấn được chuẩn bị bằng cách 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_queryhoặc trongspi_query_preparedtrả về con trỏ chính xác nhưSPI_Querykhông, sau đó có thể được chuyển chospi_fetchrow. Tham số thứ hai tùy chọn đểSPI_EXEC_PREPAREDlà một tham chiếu băm của tỷ lệ kèo bóng đá tối nay 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.
15915_16093SPI_FreePlan:
16162_16945
Lưu ý rằng chỉ số tham số trongspi_prepaređược xác định thông qua $ 1, $ 2, $ 3, v.v.
Một ví dụ khác minh họa việc sử dụng tham số tùy chọn trongSPI_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ế tỷ lệ kèo bóng đá tối nay 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ế tỷ lệ kèo bóng đá tối nay 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ế tỷ lệ kèo bóng đá tối nay 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. tỷ lệ kèo bóng đá tối nay cấp độ có thể làDebug, log, INFO, Thông báo, 18773_18782vàERROR. ERRORlà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ư perlDielệnh. tỷ lệ kèo bóng đá tối nay cấp độ khác chỉ tạo ra tỷ lệ kèo bóng đá tối nay thông điệp của tỷ lệ kèo bóng đá tối nay cấp độ ưu tiên khác nhau. Cho dù tỷ lệ kèo bóng đá tối nay 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_messages19400_19407client_min_messagesBiến cấu hình. Nhìn thấyChương 18Để 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 đá tối nay để đượ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 về đầu vào chưa hoàn thành; Nếu đối số có thể là hoàn tác,quote_nullable
thường phù tỷ lệ kèo bóng đá tối nay hơn.
quote_nullable (chuỗi)
20204_20430
quote_ident (chuỗi)
Trả về chuỗi đã cho được trích dẫn phù tỷ lệ kèo bóng đá tối nay để đượ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 đá tối nay). Báo giá nhúng được nhân đôi đúng cách.
decode_bytea (chuỗi)
Trả về dữ liệu nhị phân không được trình bày được biểu thị bằng nội dung của chuỗi đã cho, phải làbyteađược mã hóa.
encode_bytea (chuỗi)
Trả vềbyteaMẫu được mã hóa của nội dung dữ liệu 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 (xemPhần 8.15.2). 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 tỷ lệ kèo bóng đá tối nay 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)
22170_22368
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). tỷ lệ kèo bóng đá tối nay 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)
Trả về một giá trị thực nếu nội dung của chuỗi đã cho trông giống như một số, theo Perl, trả về sai. Trả về Undef nếu đối số không hoàn hảo. Không gian dẫn đầu và dấu vết bị bỏ qua.INFvà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ảnghoặcPostgresql :: Inserver :: mảng. Trả về sai nếu không.