Trong phần này, chúng tôi tuân theo quy ước TCL thông thường về việc sử dụng các dấu câu hỏi, thay vì dấu ngoặc, để chỉ ra một phần tử tùy chọn trong bản tóm tắt cú pháp. Các lệnh sau có sẵn để truy cập cơ sở dữ liệu từ phần thân của chức năng tỷ lệ kèo bóng đá trực tuyến hôm nay:
SPI_EXEC
?-Countn
? ?-Arraytên
?lệnh
?loop-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.SPI_EXEC
là số lượng hàng được xử lý (được chọn, chèn, tỷ lệ kèo bóng đá trực tuyến hôm nay nhật hoặc xóa) bằng lệnh hoặc bằng không nếu lệnh là một câu lệnh tiện ích. Ngoài ra, nếu lệnh làChọn
Câu lệnh, các giá trị của các cột đã chọn được đặt trong các biến TCL như được mô tả bên dưới.
Tùy chọn-Count
giá trị cho biếtSPI_EXEC
Để dừng một lầnn
hàng đã được tỷ lệ kèo bóng đá trực tuyến hôm nay xuất, giống như tỷ lệ kèo bóng đá trực tuyến hôm nay vấn bao gồm AGiới hạn
mệnh đề. Nếu nhưn
bằng không, tỷ lệ kèo bóng đá trực tuyến hôm nay vấn được chạy để hoàn thành, giống như khi-Count
được bỏ qua.
Nếu lệnh làChọn
Câu lệnh, các giá trị của các cột kết quả được đặt thành các biến TCL được đặt tên theo các cột. Nếu-Array
Tùy chọn được đưa ra, các giá trị cột thay vào đó được lưu trữ thành các phần tử của mảng liên kết được đặt tên, với các tên cột được sử dụng làm chỉ mục mảng. Ngoài ra, số hàng hiện tại trong kết quả (đếm từ số 0) được lưu trữ vào phần tử mảng có tênMạnh.tupno
xông, trừ khi tên đó được sử dụng làm tên cột trong kết quả.
Nếu lệnh làChọn
câu lệnh và khôngLoop-body
tập lệnh được đưa ra, thì chỉ có hàng kết quả đầu tiên được lưu trữ thành các biến TCL hoặc các phần tử mảng; Các hàng còn lại, nếu có, bị bỏ qua.SPI_EXEC
.) Ví dụ:
spi_exec "chọn đếm (*) dưới dạng cnt từ pg_proc"
Sẽ đặt biến TCL$ cnt
với số lượng hàng trongPG_PROC
Danh mục hệ thống.
Nếu tùy chọnloop-body
Đối số được đưa ra, nó là một phần của tập lệnh TCL được thực thi một lần cho mỗi hàng trong kết quả tỷ lệ kèo bóng đá trực tuyến hôm nay vấn. (loop-body
bị bỏ qua nếu lệnh đã cho không phải làChọn
.) Các giá trị của các cột của hàng hiện tại được lưu trữ thành các biến TCL hoặc các thành phần mảng trước mỗi lần lặp. Ví dụ:
spi_exec -array c "select * từ pg_class"
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;Tiếp tục
vàBreak
Là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ả tỷ lệ kèo bóng đá trực tuyến hôm nay vấn là null, biến mục tiêu cho nó làunsetthay vì được đặt.
spi_prepare
tỷ lệ kèo bóng đá trực tuyến hôm nay vấn
Typelist
Chuẩn bị và lưu gói tỷ lệ kèo bóng đá trực tuyến hôm nay vấn để thực hiện sau. Kế hoạch đã lưu sẽ được giữ lại cho cuộc sống của phiên hiện tại.
tỷ lệ kèo bóng đá trực tuyến hôm nay vấn có thể sử dụng các tham số, nghĩa là giữ chỗ cho các giá trị được cung cấp bất cứ khi nào kế hoạch thực sự được thực hiện. Trong chuỗi tỷ lệ kèo bóng đá trực tuyến hôm nay vấn, tham khảo các tham số bằng các ký hiệu$ 1
...$
. Nếu tỷ lệ kèo bóng đá trực tuyến hôm nay vấn sử dụng tham số, tên của các loại tham số phải được đưa ra làm danh sách TCL.n
TypeList
Nếu không có tham số nào được sử dụng.)
Giá trị trả về từspi_prepare
là ID tỷ lệ kèo bóng đá trực tuyến hôm nay 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 tỷ lệ kèo bóng đá trực tuyến hôm nay vấn được chuẩn bị trước đó vớispi_prepare
. QueryID
ID được trả về bởispi_prepare
. Nếu các tham chiếu tỷ lệ kèo bóng đá trực tuyến hôm nay vấn tham chiếu, Adanh sách giá trị
phải được cung cấp. Đây là danh sách TCL của các giá trị thực tế cho các tham số.spi_prepare
. Bỏ quaDanh sách giá trị
Nếu tỷ lệ kèo bóng đá trực tuyến hôm nay vấn không có tham số.
Giá trị tùy chọn cho-nulls
là 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ó độ dài chính xác vớidanh sách giá trị
. Nếu nó không được cung cấp, tất cả các giá trị tham số đều không phải là không.
ngoại trừ cách chỉ định tỷ lệ kèo bóng đá trực tuyến hôm nay vấn và tham số của nó,SPI_EXECP
hoạt động giống nhưSPI_EXEC
. The-Count
, -Array
vàloop-body
Tù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 tỷ lệ kèo bóng đá trực tuyến hôm nay bằng cách sử dụng gói đã chuẩn bị:
Tạo chức năng T1_Count (Integer, Integer) Trả về số nguyên dưới dạng $$
Chúng tôi cần dấu gạch chéo ngược bên trong chuỗi tỷ lệ kèo bóng đá trực tuyến hôm nay vấn được trao chospi_prepare
Để đảm bảo rằng$
Điểm đánh dấu sẽ được tỷ lệ kèo bóng đá trực tuyến hôm nayền quan
spi_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àngChèn
và bảng sửa đổi chứa OIDS. (Nếu không, bạn không nhận được bằng không.)
Subtransaction
lệnh
Tập lệnh TCL có tronglệnh
được thực thi trong một phép trừ SQL. Nếu tập lệnh trả về một lỗi, toàn bộ phần trừ đó sẽ được cuộn lại trước khi trả lại lỗi cho mã TCL xung quanh.Phần 44.9Để biết thêm chi tiết và ví dụ.
QUOTE
chuỗi
Nhân đôi tất cả các lần xuất hiện của các ký tự trích dẫn và dấu gạch chéo ngược trong chuỗi đã cho. Điều này có thể được sử dụng để trích dẫn một cách an toàn các chuỗi sẽ được chèn vào các lệnh SQL được cung cấp chospi_exec
hoặcspi_prepare
. Ví dụ, hãy nghĩ về chuỗi lệnh SQL như:
"Chọn '$ val' làm ret"
trong đó biến TCLVal
Thực tế chứakhông
. Điều này sẽ dẫn đến chuỗi lệnh cuối cùng:
Chọn 'không' làm ret
Điều này sẽ gây ra lỗi phân tích cú pháp trong khiSPI_EXEC
hoặcspi_prepare
. Để hoạt động đúng, lệnh đã gửi phải chứa:
Chọn 'Không' làm RET
có thể được hình thành trong tỷ lệ kèo bóng đá trực tuyến hôm nay 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 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ú pháp như một phần của chuỗi lệnh SQL.
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
, ERROR
vàFatal
. 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ã TCL xung quanh, lỗi sẽ tỷ lệ kèo bóng đá trực tuyến hôm nayền ra tỷ lệ kèo bóng đá trực tuyến hôm nay vấn gọi, khiến giao dịch hiện tại hoặc trừ bị hủy bỏ.ERROR
lệnh.Fatal
hủy bỏ giao dịch và khiến phiên hiện tại đóng cửa. .log_min_messagesvàclient_min_messagesBiến cấu hình. Nhìn thấyChương 19vàPhần 44.8Để biết thêm thông tin.