Postgresql 8.3.23 Tài kèo bóng đá pháp | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 39. kèo bóng đá pháp - Ngôn ngữ thủ tục TCL | Chuyển tiếp nhanh | Tiếp theo |
Các lệnh sau có sẵn để kèo bóng đá pháp Từ cơ thể của chức năng PL/TCL:
SPI_EXEC
?-Countn? ?-Arraytên?lệnh?Vòng lặp-Body?Thực thi lệnh SQL được đưa ra dưới dạng chuỗi. Một lỗi trong
Lệnh gây ra lỗi được nêu ra. Nếu không,
Giá trị trả về củaSPI_EXEC
IS
số lượng hàng được xử lý (được chọn, chèn, kèo bóng đá pháp nhật,
hoặc bị xóa) bằng lệnh hoặc không nếu lệnh là một
Tuyên bố tiện ích. Ngoài ra, nếu lệnh làChọnCâu lệnh, các giá trị của
các cột đã chọn được đặt trong các biến TCL là
được mô tả bên dưới.
Tùy chọn-Count11662_11685SPI_EXEC
Số tối đa
của các hàng để xử lý trong lệnh. Hiệu quả của điều này là
có thể so sánh với việc thiết lập một kèo bóng đá pháp vấn như một con trỏ và sau đó
nóiFetchn.
Nếu lệnh làChọnCâu lệnh, các giá trị của các cột kết quả được đặt vào Các biến TCL được đặt tên theo các cột. Nếu-ArrayTùy chọn được đưa ra, các giá trị cột thay vào đó được lưu trữ vào mảng kết hợp được đặt tên, với tên cột được sử dụng làm chỉ mục mảng.
Nếu lệnh làChọncâu lệnh và khôngloop-bodytập lệnh được đưa ra, thì chỉ có hàng kết quả đầu tiên là
Được lưu trữ thành các biến TCL; các hàng còn lại, nếu có, là
bỏ qua. Không có lưu trữ xảy ra nếu kèo bóng đá pháp vấn trả về không có hàng.
(Trường hợp này có thể được phát hiện bằng cách kiểm tra kết quả củaSPI_EXEC
.) Ví dụ:
spi_exec "chọn đếm (*) dưới dạng cnt từ pg_proc"
Sẽ đặt biến TCL$ cntvới số lượng hàng trongPG_PROCDanh mục hệ thống.
Nếu tùy chọnloop-body13131_13254loop-bodybị bỏ qua nếu đã cho lệnh không phải làChọn13383_13509
SPI_EXEC -Array C "Chọn * từ pg_class" ELOG gỡ lỗi "Have Bảng $ C (RelName)"
Sẽ in thông báo nhật ký cho mỗi hàngpg_ class. Tính năng này hoạt động tương tự như Các cấu trúc vòng lặp TCL khác; đặc biệtTiếp tụcvàBreakLàm việc theo cách thông thường bên trong thân vòng.
Nếu một cột của kết quả kèo bóng đá pháp vấn là null, mục tiêu Biến cho nó là"Unset"thay vì được đặt.
spi_prepare
kèo bóng đá pháp vấn Typelistkèo bóng đá pháp vấn có thể sử dụng tham số các giá trị được cung cấp bất cứ khi nào kế hoạch thực sự thực hiện. Trong chuỗi kèo bóng đá pháp vấn, tham khảo các tham số của Biểu tượng$ 1...$n. Nếu kèo bóng đá pháp vấn sử dụng tham số, tên của các loại tham số Phải được đưa ra như một danh sách TCL. (Viết một danh sách trống choTypeListNếu không có tham số được sử dụng.)
Giá trị trả về từspi_prepare
là một ID kèo bóng đá pháp vấn được sử dụng trong
Các cuộc gọi tiếp theo đếnSPI_EXECP
. Nhìn thấySPI_EXECP
Ví dụ.
SPI_EXECP
?-Countn? ?-Arraytên? ?-nullschuỗi?QueryID?danh sách giá trị?
?loop-body?Thực hiện một kèo bóng đá pháp vấn được chuẩn bị trước đó vớispi_prepare
. QueryIDID được trả về bởispi_prepare
. Nếu kèo bóng đá pháp vấn
Tham chiếu tham chiếu, ADanh sách giá trịphải được cung cấp. Đây là
Một danh sách TCL của các giá trị thực tế cho các tham số. Danh sách
Phải có cùng độ dài với danh sách loại tham số
Trước đây được trao chospi_prepare
. Bỏ quaDanh sách giá trịNếu kèo bóng đá pháp vấn không có
tham số.
Giá trị tùy chọn cho-nullslà một chuỗi không gian và'N'Nhân vật TellingSPI_EXECP
Những tham số nào là giá trị null. Nếu được đưa ra, nó phải
có cùng độ dài vớiDanh sách giá trị. Nếu nó không được đưa ra, tất cả
các giá trị tham số không phải là không.
Ngoại trừ cách mà kèo bóng đá pháp vấn và các tham số của nó
được chỉ định,SPI_EXECP
hoạt động giống nhưSPI_EXEC
. The-Count, -Arrayvàloop-bodyTùy chọn giống nhau và
giá trị kết quả cũng vậy.
Đây là một ví dụ về chức năng kèo bóng đá pháp bằng cách sử dụng Chuẩn bị kế hoạch:
17479_17887
Chúng tôi cần dấu gạch chéo ngược bên trong chuỗi kèo bóng đá pháp vấn được trao chospi_prepare
Để đảm bảo điều đó
The$n18102_18147spi_prepare
as-is, và không
được thay thế bằng thay thế biến TCL.
spi_lastoid
Trả về oid của hàng được chèn bởi lần cuốiSPI_EXEC
hoặcSPI_EXECP
, nếu lệnh là một
hàng đơnChènvà sửa đổi
Bảng chứa OIDS. (Nếu không, bạn không nhận được bằng không.)
QUOTE
chuỗiNhân đôi tất cả các lần xuất hiện của trích dẫn đơn và dấu gạch chéo ngược
ký tự trong chuỗi đã cho. Điều này có thể được sử dụng để an toàn
Trích dẫn các chuỗi được chèn vào các lệnh SQL
được trao choSPI_EXEC
hoặcspi_prepare
. Ví dụ,
Suy nghĩ về chuỗi lệnh SQL như:
"Chọn '$ val' làm ret"
Trong đó biến TCLValthực tế chứakhông. Cái này sẽ dẫn đến chuỗi lệnh cuối cùng:
Chọn 'không' làm ret
sẽ gây ra lỗi phân tích cú kèo bóng đá pháp trong khiSPI_EXEC
hoặcspi_prepare
. Để làm việc đúng,
Lệnh đã gửi phải chứa:
Chọn 'Không' như Ret
có thể được hình thành trong kèo bóng đá pháp bằng cách sử dụng:
"Chọn '[QUOTE $ val]' là ret"
Một lợi thế củaSPI_EXECP
Có phải bạn không cần phải trích dẫn các giá trị tham số như thế này,
Vì các tham số không bao giờ được phân tích cú kèo bóng đá pháp như một phần của SQL
chuỗi lệnh.
ELOG
Cấp MSGphá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, ERRORvàFatal. ERRORlàm tăng tình trạng lỗi; Nếu đây là không bị mắc kẹt bởi mã TCL xung quanh, lỗi tuyên kèo bóng đá phápền ra kèo bóng đá pháp vấn gọi, gây ra hiện tại giao dịch hoặc trừ đi bị hủy bỏ. Đây là thực tế giống như tclERRORlệnh.Fatalhủy bỏ giao dịch và gây ra phiên hiện tại để tắt. (Có lẽ không có gì tốt lý do để sử dụng mức lỗi này trong các chức năng PL/TCL, nhưng nó được cung cấp cho tính đầy đủ.) Các cấp khác chỉ Tạo thông điệp của các cấp độ ưu tiên khác nhau. kèo bóng đá pháp 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ủ hoặc cả hai đều được điều khiển bởi Thelog_min_messagesvàclient_min_messagesBiến cấu hình. Nhìn thấyChương 18Để biết thêm thông tin.