Postgresql 8.3.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 40. PL/Perl - Ngôn ngữ thủ tục Perl | Chuyển tiếp nhanh | NEXT |
kèo bóng đá việt nam vào cơ sở dữ liệu từ chức năng Perl của bạn có thể
Xong qua chức năngspi_exec_query
được mô tả bên dưới hoặc thông qua một
Mô -đun thử nghiệmDBD :: PGSPI(cũng có sẵn tạiTrang web gương CPAN).
Mô -đun này có sẵnDBI-Compliant cơ sở kèo bóng đá việt nam có tên$ pg_dbhcó thể được sử dụng để thực hiện
kèo bóng đá việt nam vấn với bình thườngDBICú pháp.
PL/PERL cung cấp các lệnh Perl bổ sung:
spi_exec_query
(kèo bóng đá việt nam vấn[,Max-Rows])spi_query
(lệnh)spi_fetchrow
(con trỏ)spi_prepare
(lệnh, Các loại đối số)SPI_EXEC_PREPARED
(kế hoạch)spi_query_prepared
8526_8529kế hoạch[,thuộc tính],Đối số)spi_cursor_close
(con trỏ)SPI_FreePlan
(kế hoạch)spi_exec_querythực thi SQL lệnh 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 bé nhỏ.Đây là một ví dụ về kèo bóng đá việt nam vấn (Chọnlệnh) với tối đa tùy chọn Số lượng hàng:
9468_9522
Đ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;
9924_9967ChọnTruy vấn có thể được kèo bóng đá việt nam 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 các giá trị my_table (1, 'test')"; $ rv = spi_exec_query ($ query);
Sau đó, bạn có thể kèo bóng đá việt nam trạng thái lệ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:
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ế chức năng 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_queryvàspi_fetchrow11558_11695spi_fetchrowWorkschỉvớiSPI_Query. Ví dụ sau minh họa Cách bạn sử dụng chúng cùng nhau:
11961_12827
spi_prepare, spi_query_prepared, SPI_EXEC_PREPAREDvàSPI_FreePlanThực hiện tương tự chức năng nhưng cho các kèo bóng đá việt nam vấn đã chuẩn bị. Khi một kế hoạch kèo bóng đá việt nam vấn được chuẩn bị bằng một cuộc gọi đếnspi_prepare, kế hoạch có thể được sử dụng thay vì kèo bóng đá việt nam vấn chuỗi, trongSPI_EXEC_PREPARED, trong đó kết quả là Giống như được trả về bởispi_exec_queryhoặc trongspi_query_preparedtrong đó trả về con trỏ Chính xác nhưSPI_Querykhông, trong đó sau đó có thể được chuyển chospi_fetchrow.
Ưu điểm của các kèo bóng đá việt nam 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 thực thi kèo bóng đá việt nam 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:
13950_14711
Lưu ý rằng chỉ số tham số trongspi_prepaređược xác định qua $ 1, $ 2, $ 3, v.v. Vì vậy, tránh tuyên bố các chuỗi kèo bóng đá việt nam vấn trong các trích dẫn kép có thể dễ dàng dẫn đến các lỗi khó bắt.
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òn
Hàng để đọc. Con trỏ được tự động giải phóng khispi_fetchrow
returnUndef. Nếu bạn không muốn đọc
tất cả các hàng, thay vào đó 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ớ.
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áovà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, thì Lỗi tuyên kèo bóng đá việt namền ra kèo bóng đá việt nam vấn gọi, gây ra giao dịch hiện tại hoặc trừ đi bị hủy bỏ. Cái này thực sự giống như perlDielệnh. Các cấp độ khác chỉ tạo ra thông điệp của các cấp độ ưu tiên khác nhau. Cho dù tin nhắn của Một ưu tiên cụ thể được báo cáo cho khách hàng, được viết đến nhật ký máy chủ hoặc 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 18Để biết thêm thông tin.