Phiên bản không được hỗ trợ:6.5
Tài liệu này dành cho phiên bản không được hỗ trợ tỷ lệ kèo bóng đá 88 PostgreSQL.
Bạn có thể muốn xem cùng tỷ lệ kèo bóng đá 88 trang chohiện tạiPhiên bản hoặc một tỷ lệ kèo bóng đá 88 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

tỷ lệ kèo bóng đá 88

tỷ lệ kèo bóng đá 88 là ngôn ngữ thủ tục có thể tải choPostgresHệ thống cơ sở dữ liệu cho phép tỷ lệ kèo bóng đá 88 Ngôn ngữ được sử dụng để tạo các chức năng và trình kích hoạt.

Gói này ban đầu được viết bởi Jan Wieck.

Tổng quan

tỷ lệ kèo bóng đá 88 cung cấp hầu hết các khả năng mà một người viết chức năng có trong ngôn ngữ c, ngoại trừ một số hạn chế.

Hạn chế tốt là, mọi thứ được thực hiện trong một an toàn tỷ lệ kèo bóng đá 88-Interpreter. Ngoài bộ lệnh giới hạn của bộ an toàn tỷ lệ kèo bóng đá 88, chỉ có một vài lệnh để truy cập cơ sở dữ liệu SPI và để nêu tin nhắn thông qua elog (). Không có cách nào để truy cập nội bộ của phụ trợ cơ sở dữ liệu hoặc truy cập cấp hệ điều hành dưới quyền củaPostgresID người dùng như tỷ lệ kèo bóng đá 88 C. Vì vậy, bất kỳ người dùng cơ sở dữ liệu không quan trọng nào cũng có thể là được phép sử dụng ngôn ngữ này.

cái khác, được đưa ra nội bộ, hạn chế là, các thủ tục tỷ lệ kèo bóng đá 88 không thể được sử dụng để tạo các chức năng đầu vào/đầu ra cho dữ liệu mới các loại.

Đối tượng được chia sẻ cho trình xử lý cuộc gọi tỷ lệ kèo bóng đá 88 tự động Được xây dựng và cài đặt trongPostgresThư mục thư viện nếu tỷ lệ kèo bóng đá 88/TK Hỗ trợ được chỉ định trong bước cấu hình của cài đặt thủ tục.

Mô tả

PostgresQuy trình chức năng và tỷ lệ kèo bóng đá 88 Tên

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ự trong tỷ lệ kèo bóng đá 88, 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 tỷ lệ kèo bóng đá 88 cũng vậy.

Xác định Chức năng trong tỷ lệ kèo bóng đá 88

Để tạo hàm trong ngôn ngữ tỷ lệ kèo bóng đá 88, sử dụng ngôn ngữ đã biết Cú pháp

tạo chức năngfuncname(Đối số-loại) trả vềreturnTypeAS '
        # tỷ lệ kèo bóng đá 88 Chức năng Cơ thể
    'Ngôn ngữ' pltcl ';
Khi gọi chức năng này trong 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 tỷ lệ kèo bóng đá 88. 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 ';
Đối số loại tổng hợp được đưa ra cho thủ tục là tỷ lệ kèo bóng đá 88 Mảng. Tên phần tử trong mảng là tên thuộc tính của loại tổng hợp. Nếu một thuộc tính trong hàng thực tế có null Giá trị, nó sẽ không xuất hiện trong mảng! Đây là một ví dụ mà Xác định chức năng Overpaid_2 (như được tìm thấy trong cũPostgresTài liệu) trong tỷ lệ kèo bóng đá 88
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 ';

Dữ liệu toàn cầu trong tỷ lệ kèo bóng đá 88

Đô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 tỷ lệ kèo bóng đá 88 được thực hiện trong 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 tỷ lệ kèo bóng đá 88 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.

Trigger Quy trình trong tỷ lệ kèo bóng đá 88

Quy trình kích hoạt được xác định tỷ lệ kèo bóng đá 88Postgresdưới dạng các 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ữ tỷ lệ kèo bóng đá 88 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 tỷ lệ kèo bóng đá 88 các biến sau:

$ tg_name

Tên tỷ lệ kèo bóng đá 88 bộ kích hoạt từ Trình kích hoạt tạo tuyên bố.

$ TG_RELID

ID đối tượng tỷ lệ kèo bóng đá 88 bảng gây ra quy trình kích hoạt được gọi.

$ TG_RELATTS

Danh sách tỷ lệ kèo bóng đá 88 của các tên trường bảng được đặt trước với một trống rỗng Liệt kê yếu tố. Vì vậy, tìm kiếm một tên phần tử trong danh sách với Lệnh Lsearch tỷ lệ kèo bóng đá 88 trả về cùng số dương Bắt đầu từ 1 vì các trường được đánh số trong PG_Attribution Danh mục hệ thống.

$ tg_when

Chuỗi trước hoặc sau khi tùy thuộc vào sự kiện tỷ lệ kèo bóng đá 88 cuộc gọi kích hoạt.

$ tg_level

hàng chuỗi hoặc câu lệnh tùy thuộc vào sự kiện tỷ lệ kèo bóng đá 88 cuộc gọi kích hoạt.

$ tg_op

Chất chèn, cập nhật hoặc xóa tùy thuộc vào sự kiện tỷ lệ kèo bóng đá 88 cuộc gọi kích hoạt.

$ new

tỷ lệ kèo bóng đá 88 mảng chứa các 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.

$ cũ

tỷ lệ kèo bóng đá 88 mảng chứa các 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.

$ gd

Mảng dữ tỷ lệ kèo bóng đá 88 trạng thái toàn cầu như được mô tả ở trên.

$ args

Một danh sách tỷ lệ kèo bóng đá 88 của các đối số cho quy trình như được đưa ra trong Tạo câu lệnh kích hoạt. Các đối số cũng có thể truy cập được $ 1 ... $ n trong cơ thể thủ tục.

Giá trị trả về từ quy trình kích hoạt là một trong 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 tỷ lệ kèo bóng đá 88 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 trong số được đưa ra trong $ 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ị tỷ lệ kèo bóng đá 88 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:

Tạo chức năng trigfunc_modcount () trả về mờ đục là '
        chuyển đổi $ tg_op 
            CHÈN 
                Đặt mới ($ 1) 0

            CẬP NHẬT 
                Đặt mới ($ 1) $ Old ($ 1)
                tăng mới ($ 1)

            mặc định 
                trả lại ok

        trả lại [mảng nhận mới]
    'Ngôn ngữ' pltcl ';

    Tạo bảng myTab (num int4, modcnt int4, desc văn bản);

    Tạo Trigger Trig_MyTab_ModCount trước khi chèn hoặc cập nhật trên MyTab
        Đối với mỗi hàng thực thi quy trình TrigFunc_ModCount ('modcnt');

Truy cập cơ sở dữ liệu Từ tỷ lệ kèo bóng đá 88

Các lệnh sau có sẵn để truy cập cơ sở dữ liệu từ Cơ thể của thủ tục tỷ lệ kèo bóng đá 88:

ELOGcấp MSG

Lửa tỷ lệ kèo bóng đá 88 thông báo nhật ký. Các cấp độ có thể là thông báo, cảnh báo, lỗi, Fatal, Debug và Noind thích cho hàm ELOG () C.

QUOTEchuỗi

Sao chép tất cả các sự cố của trích dẫn đơn và dấu gạch chéo ký tự. Nó nên được sử dụng khi các biến được sử dụng tỷ lệ kèo bóng đá 88 chuỗi truy vấn được trao cho spi_exec hoặc spi_prepare (không phải cho Danh sách giá trị trên SPI_EXECP). Nghĩ về một chuỗi truy vấn như

"Chọn '$ val' làm ret"
trong đó biến tỷ lệ kèo bóng đá 88 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 tỷ lệ kèo bóng đá 88 spi_exec hoặc Spi_Prepare. Nó phải chứa
"Chọn 'không' làm ret"
và phải được viết là
"Chọn '[QUOTE $ VAL]' là RET"
spi_exec? -Countn? ? -Arraytên?tỷ lệ kèo bóng đá 88 vấn?loop-body?

Gọi 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. tỷ lệ kèo bóng đá 88 Giá trị tùy chọn -Count cho SPI_EXEC số 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 tỷ lệ kèo bóng đá 88 như trong 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 tỷ lệ kèo bóng đá 88 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ữ tỷ lệ kèo bóng đá 88 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 "Chọn * 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. Các Giá trị trả về của spi_exec là số lượng hàng bị ảnh hưởng bởi truy vấn là tìm thấy tỷ lệ kèo bóng đá 88 biến toàn cầu spi_proced.
spi_preparetỷ lệ kèo bóng đá 88 vấn TypeList

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 tỷ lệ kèo bóng đá 88 đó 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ó.

Nếu các đối số tham chiếu truy vấn, tên loại phải là đưa ra như một danh sách tỷ lệ kèo bóng đá 88. Giá trị trả về từ spi_prepare là một ID truy vấn sẽ được sử dụng trong các cuộc gọi tiếp theo đến SPI_EXECP. Nhìn thấy spi_execp cho một mẫu.

SPI_EXEC? -Countn? ? -Arraytên? ? -nullsstr?tỷ lệ kèo bóng đá 88 vấn?Valuelist? ?Vòng lặp-Body?

Thực hiện tỷ lệ kèo bóng đá 88 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à tỷ lệ kèo bóng đá 88 chuỗi không gian và 'n' Các 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ị.

tỷ lệ kèo bóng đá 88 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 tỷ lệ kèo bóng đá 88 của Các 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à tỷ lệ kèo bóng đá 88 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à các biến cho các trường đã chọn.

Đây là một ví dụ cho chức năng tỷ lệ kèo bóng đá 88 bằng cách sử dụng Chuẩn bị kế hoạch:

Tạo chức năng T1_Count (Int4, Int4) Trả về Int4 là '
        Nếu ! [thông tin tồn tại gd (kế hoạch)] 
            # Chuẩn bị kế hoạch đã lưu tỷ lệ kèo bóng đá 88 cuộc gọi đầu tiên
            Đặt gd (kế hoạch) [spi_prepare \
                    "Chọn Đếm (*) là CNT từ T1 tỷ lệ kèo bóng đá 88 đó Num = \ $ 1 và Num <= \ $ 2" \\
                    int4]

        SPI_EXECP -Count 1 $ gd (kế hoạch) [Danh sách $ 1 $ 2]
        trả về $ cnt
    'Ngôn ngữ' pltcl ';
Lưu ý rằng mỗi dấu gạch chéo ngược mà tỷ lệ kèo bóng đá 88 sẽ thấy phải được nhân đôi Trong 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 trong 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 trong cuộc gọi chức năng đầu tiên.
Mô -đun và lệnh không xác định

tỷ lệ kèo bóng đá 88 có hỗ trợ đặc biệt cho những thứ thường được sử dụng. Nó Nhận dạng hai bảng ma thuật, PLTCL_MODULES và PLTCL_MODFUNCS. Nếu chúng tồn tại, mô -đun 'không xác định' được tải vào Thông dịch viên ngay sau khi sáng tạo. Bất cứ khi nào một TCL không xác định Thủ tục được gọi, Proc không xác định được yêu cầu kiểm tra xem có Quy trình được xác định trong một trong các mô -đun. Nếu điều này là đúng, Các mô -đun được tải theo yêu cầu. Để cho phép hành vi này, Handler cuộc gọi tỷ lệ kèo bóng đá 88 phải được biên dịch với -Dpltcl_unknown_support Set.

Có các tập lệnh hỗ trợ để duy trì các bảng này trong Các mô -đun thư mục của nguồn tỷ lệ kèo bóng đá 88 bao gồm nguồn Đối với mô -đun không xác định phải được cài đặt ban đầu.