inPostgres, một và giống nhau Tên chức năng có thể được sử dụng cho các chức năng khác nhau miễn là Số lượng đối số hoặc loại của chúng khác nhau. Điều này sẽ va chạm với Tên thủ tục TCL. Để cung cấp sự linh hoạt tương tự soi kèo bóng đá truoctran PL/TCL, Tên thủ tục TCL nội bộ chứa ID đối tượng của Quy trình PG_PROC ROW như một phần của tên của họ. Vì vậy, khác nhau phiên bản argtype của cùng mộtPostgresHàm khác nhau đối với TCL cũng vậy.
Để tạo một hàm soi kèo bóng đá truoctran ngôn ngữ PL/TCL, sử dụng Cú pháp
tạo chức năngfuncname đối số loại) trả vềReturn-TypeAs ' # PL/TCL Chức năng Cơ thể 'Ngôn ngữ' pltcl ';Khi gọi chức năng này soi kèo bóng đá truoctran một truy vấn, các đối số là Được đưa ra dưới dạng các biến $ 1 ... $ N cho cơ quan thủ tục TCL. Vì vậy, một chút hàm tối đa trả về cao hơn của hai giá trị INT4 sẽ là được tạo như:
Tạo chức năng TCL_MAX (INT4, INT4) Trả về Int4 là ' Nếu $ 1 $ 2 return $ 1 Trả lại $ 2 'Ngôn ngữ' pltcl ';6696_7009PostgresTài liệu) soi kèo bóng đá truoctran PL/TCL
Tạo chức năng OVERPAID_2 (EMP) Trả về Bool là ' Nếu 2000000.0 <$ 1 (tiền lương) trả lại "t" Nếu $ 1 (tuổi) <30 && 100000.0 <$ 1 (tiền lương) trả lại "t" trả lại "f" 'Ngôn ngữ' pltcl ';
Đôi khi (đặc biệt là khi sử dụng các hàm SPI được mô tả sau đó) rất hữu ích khi có một số dữ liệu trạng thái toàn cầu được tổ chức giữa hai cuộc gọi đến một thủ tục. Tất cả các thủ tục PL/TCL được thực hiện soi kèo bóng đá truoctran Một phụ trợ chia sẻ cùng một thông dịch TCL an toàn. Để giúp bảo vệ Các thủ tục PL/TCL từ các tác dụng phụ, một mảng được cung cấp cho Mỗi thủ tục thông qua lệnh upvar. Tên toàn cầu của cái này Biến là quy trình tên nội bộ và tên địa phương là Gd.
Quy trình kích hoạt được xác định soi kèo bóng đá truoctranPostgresdưới dạng soi kèo bóng đá truoctran chức năng mà không có đối số và A Trả lại loại mờ đục. Và chúng bằng ngôn ngữ PL/TCL cũng vậy.
Thông tin từ Trình quản lý kích hoạt được cung cấp cho Cơ quan thủ tục soi kèo bóng đá truoctran các biến sau:
Tên soi kèo bóng đá truoctran bộ kích hoạt từ Trình kích hoạt tạo tuyên bố.
ID đối tượng soi kèo bóng đá truoctran bảng gây ra quy trình kích hoạt được gọi.
Một danh sách TCL của trường trường bảng có tiền tố với trống Liệt kê yếu tố. Vì vậy, tìm kiếm một tên phần tử soi kèo bóng đá truoctran danh sách với Lệnh Lsearch TCL trả về cùng số dương Bắt đầu từ 1 vì các trường được đánh số soi kèo bóng đá truoctran PG_Attribution Danh mục hệ thống.
Chuỗi trước hoặc sau khi tùy thuộc vào sự kiện soi kèo bóng đá truoctran cuộc gọi kích hoạt.
Hàng chuỗi hoặc câu lệnh tùy thuộc vào sự kiện soi kèo bóng đá truoctran cuộc gọi kích hoạt.
Chèn, cập nhật hoặc xóa tùy thuộc vào sự kiện soi kèo bóng đá truoctran cuộc gọi kích hoạt.
Một mảng chứa soi kèo bóng đá truoctran giá trị của hàng bảng mới trên Chèn/cập nhật hành động hoặc trống khi xóa.
Một mảng chứa soi kèo bóng đá truoctran giá trị của hàng bảng cũ trên Cập nhật/xóa hành động hoặc trống khi chèn.
Mảng dữ soi kèo bóng đá truoctran trạng thái toàn cầu như được mô tả ở trên.
Danh sách TCL của các đối số cho thủ tục như được đưa ra soi kèo bóng đá truoctran Tạo câu lệnh kích hoạt. Các đối số cũng có thể truy cập được $ 1 ... $ n soi kèo bóng đá truoctran cơ thể thủ tục.
Giá trị trả về từ quy trình kích hoạt là một soi kèo bóng đá truoctran các chuỗi OK hoặc bỏ qua, hoặc một danh sách được trả về bởi lệnh TCL 'mảng nhận'. Nếu giá trị trả về ổn, hoạt động bình thường (Chèn/Cập nhật/Xóa) Việc bắn kích hoạt này sẽ diễn ra. Rõ ràng, Skip nói với Trình quản lý kích hoạt để âm thầm đàn áp hoạt động. Danh sách từ 'mảng get' cho PL/TCL trả về một Hàng sửa đổi cho trình quản lý kích hoạt sẽ được chèn vào của một soi kèo bóng đá truoctran số được đưa ra soi kèo bóng đá truoctran $ mới (chỉ chèn/chỉ cập nhật). Không cần phải nói rằng Tất cả điều này chỉ có ý nghĩa khi kích hoạt trước đây và cho mỗi HÀNG NGANG.
Đây là một ví dụ nhỏ quy trình kích hoạt buộc một số nguyên giá trị soi kèo bóng đá truoctran bảng để theo dõi # các bản cập nhật thực hiện trên hàng. Đối với hàng mới được chèn, giá trị là khởi tạo lên 0 và sau đó tăng lên trên mỗi bản cập nhật hoạt động:
11020_11535
soi kèo bóng đá truoctran lệnh sau có sẵn để truy cập cơ sở dữ liệu từ Cơ thể của thủ tục PL/TCL:
Lửa một thông báo nhật ký. soi kèo bóng đá truoctran cấp độ có thể là thông báo, cảnh báo, lỗi, Fatal, Debug và Noind thích choELOGc chức năng.
Sao chép tất cả các sự cố của trích dẫn đơn và dấu gạch chéo ngược ký tự. Nó nên được sử dụng khi các biến được sử dụng soi kèo bóng đá truoctran chuỗi truy vấn được trao choSPI_EXEChoặcspi_prepare(không dành cho danh sách giá trị TRÊNSPI_EXECP). Suy nghĩ về soi kèo bóng đá truoctran truy vấn Chuỗi giống như
"Chọn '$ val' làm ret"soi kèo bóng đá truoctran đó biến TCL thực sự chứa "không". Cái này sẽ dẫn đến chuỗi truy vấn cuối cùng
"Chọn 'không' làm ret"Điều gì sẽ gây ra lỗi phân tích cú pháp soi kèo bóng đá truoctranSPI_EXEChoặcspi_prepare. Nó Nên chứa
"Chọn 'không' làm ret"và phải được viết là
"Chọn '[QUOTE $ VAL]' là RET"
Gọi cho trình phân tích cú pháp/người lập kế hoạch/tối ưu hóa/thực thi cho truy vấn. soi kèo bóng đá truoctran giá trị tùy chọn -Count cho biếtSPI_EXECSố lượng hàng tối đa được xử lý bởi truy vấn.
Nếu truy vấn là câu lệnh Chọn và tùy chọn Loop-body (một cơ thể của các lệnh TCL như soi kèo bóng đá truoctran một câu lệnh foreach) được đưa ra, nó được đánh giá cho từng hàng được chọn và hành xử Giống như mong đợi trên tiếp tục/phá vỡ. Các giá trị của các trường đã chọn được đặt vào các biến được đặt tên là tên cột. Vì vậy, a
spi_exec "chọn đếm (*) dưới dạng cnt từ pg_proc"sẽ đặt biến $ cnt thành số lượng hàng soi kèo bóng đá truoctran Danh mục hệ thống PG_PROC. Nếu tùy chọn -Array được đưa ra, cột Các giá trị được lưu trữ soi kèo bóng đá truoctran mảng kết hợp có tên 'tên' được lập chỉ mục bởi Tên cột thay vì các biến riêng lẻ.
spi_exec -array c "select * từ pg_class" ELOG gỡ lỗi "Have Bảng $ C (RelName)"Sẽ in thông báo nhật ký gỡ lỗi cho mỗi hàng pg_class. soi kèo bóng đá truoctran Giá trị trả về củaSPI_EXEClà số lượng của các hàng bị ảnh hưởng bởi truy vấn như được tìm thấy soi kèo bóng đá truoctran biến toàn cầu Spi_proced.
Chuẩn bị và lưu gói truy vấn để thực hiện sau. Nó là a Bit khác với cấp C spi_prepare soi kèo bóng đá truoctran đó kế hoạch là Tự động sao chép vào bối cảnh bộ nhớ Toplevel. Như vậy, Hiện tại không có cách nào để chuẩn bị một kế hoạch mà không tiết kiệm Nó.
14787_15000
Thực hiện soi kèo bóng đá truoctran kế hoạch đã chuẩn bị từ spi_prepare với biến thay thế. Giá trị -Count tùy chọn cho SPI_EXECP Số lượng hàng tối đa được xử lý bởi truy vấn.
Giá trị tùy chọn cho -nulls là một chuỗi không gian và 'n' soi kèo bóng đá truoctran ký tự nói với SPI_EXECP giá trị nào là của NULL. Nếu như đưa ra, nó phải có chính xác độ dài của số lượng giá trị.
Truy vấn là ID được trả về bởi cuộc gọi SPI_Prepare.
Nếu có một người đánh máy được trao cho spi_prepare, một danh sách TCL của soi kèo bóng đá truoctran giá trị có cùng độ dài phải được trao cho SPI_EXECP sau truy vấn. Nếu danh sách loại trên spi_prepare trống, Đối số này phải được bỏ qua.
Nếu truy vấn là một câu lệnh chọn, giống như mô tả Đối với SPI_EXEC xảy ra cho cơ thể vòng lặp và soi kèo bóng đá truoctran biến cho soi kèo bóng đá truoctran trường đã chọn.
Đây là soi kèo bóng đá truoctran ví dụ cho chức năng PL/TCL bằng cách sử dụng Chuẩn bị kế hoạch:
16290_16688Lưu ý rằng mỗi dấu gạch chéo ngược mà TCL sẽ thấy phải được nhân đôi soi kèo bóng đá truoctran truy vấn tạo chức năng, vì các quy trình phân tích cú pháp chính Backslashes quá trên tạo chức năng. Bên soi kèo bóng đá truoctran chuỗi truy vấn được đưa ra Để spi_prepare thực sự là dấu hiệu đô la để đánh dấu tham số các vị trí và không để $ 1 được thay thế bằng giá trị được đưa ra soi kèo bóng đá truoctran cuộc gọi chức năng đầu tiên.
17111_17632
Có các tập lệnh hỗ trợ để duy trì các bảng này soi kèo bóng đá truoctran Các mô -đun thư mục của nguồn PL/TCL bao gồm nguồn Đối với mô -đun không xác định phải được cài đặt ban đầu.