Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
Tài liệu này dành cho phiên bản không được hỗ trợ của kèo chấp bóng đá hôm nay.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo chấp bóng đá hôm nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

40.1. Các kèo chấp bóng đá hôm nay số

Để tạo hàm trong ngôn ngữ kèo chấp bóng đá hôm nay, sử dụng tiêu chuẩnPostgreSQL: TàiCú pháp:

tạo chức năngfuncname(đối số loại) Trả vềReturn-Typenhư $$
    # kèo chấp bóng đá hôm nay chức năng cơ thể
$$ ngôn ngữ plperl;

Phần thân của hàm là mã perl thông thường. Trong thực tế, Mã keo kèo chấp bóng đá hôm nay kết thúc nó bên trong một chương trình con Perl. Một kèo chấp bóng đá hôm nay Hàm phải luôn trả về giá trị vô hướng. Bạn có thể trả lại nhiều hơn các cấu trúc phức tạp (mảng, hồ sơ và bộ) bằng cách trả lại Tài liệu tham khảo, như được thảo luận dưới đây. Không bao giờ trả lại danh sách.

Lưu ý:Việc sử dụng chương trình con được đặt tên là nguy hiểm ở Perl, đặc biệt nếu họ đề cập đến từ vựng Các biến trong phạm vi kèm theo. Vì hàm kèo chấp bóng đá hôm nay được bọc trong một chương trình con, bất kỳ chương trình con có tên bạn tạo ra sẽ được lồng. Nói chung, việc tạo ra an toàn hơn nhiều Các chương trình con ẩn danh mà bạn gọi qua một coderef. XemperldiagTrang người đàn ông để biết thêm chi tiết.

Cú pháp củaTạo chức nănglệnh yêu cầu cơ thể chức năng được viết dưới dạng chuỗi không thay đổi. Thường thuận tiện nhất khi sử dụng báo giá đô la (nhìn thấyPhần 4.1.2.2) cho hằng số chuỗi. Nếu bạn chọn sử dụng Escape Chuỗi cú phápE '', bạn phải nhân đôi bất kỳ dấu ngoặc đơn (') và dấu gạch chéo ngược (\11757_11801Phần 4.1.2.1).

11886_11981@_,, và giá trị kết quả được trả về vớireturnhoặc là biểu thức cuối cùng được đánh giá trong chức năng.

Ví dụ: một kèo chấp bóng đá hôm nay trả về lớn hơn của hai số nguyên Các giá trị có thể được định nghĩa là:

Tạo kèo chấp bóng đá hôm nay perl_max (số nguyên, số nguyên) Trả về số nguyên dưới dạng $$
    if ($ _ [0] $ _ [1]) return $ _ [0]; 
    trả về $ _ [1];
$$ ngôn ngữ plperl;

Nếu giá trị null SQLIS được chuyển cho một kèo chấp bóng đá hôm nay, giá trị đối số sẽ xuất hiện dưới dạng"không xác định"Trong kèo chấp bóng đá hôm nay. Ở trên Định nghĩa chức năng sẽ không hoạt động rất độc đáo với các đầu vào null (Trên thực tế, nó sẽ hành động như thể chúng là số không). Chúng ta có thể thêmnghiêm ngặtĐịnh nghĩa chức năng để làmkèo chấp bóng đá hôm nay12858_13127perl_maxvới một null và một Đối số không liên quan để trả về đối số nonnull, thay vì giá trị null:

Tạo kèo chấp bóng đá hôm nay perl_max (số nguyên, số nguyên) Trả về số nguyên dưới dạng $$
    của tôi ($ x, $ y) = @_;
    if (! Xác định $ x) 
        if (! Xác định $ y) return undef; 
        trả lại $ y;

    if (! Xác định $ y) return $ x; 
    if ($ x $ y) return $ x; 
    trả lại $ y;
$$ ngôn ngữ plperl;

Như được hiển thị ở trên, để trả về giá trị null SQL từ kèo chấp bóng đá hôm nay chức năng, trả về một giá trị không xác định. Điều này có thể được thực hiện cho dù chức năng là nghiêm ngặt hay không.

Bất cứ điều gì trong một đối số chức năng không phải là tham chiếu là một Chuỗi, nằm trong tiêu chuẩnkèo chấp bóng đá hôm nayBiểu diễn văn bản bên ngoài cho loại dữ liệu liên quan. Trong trường hợp số thông thường hoặc văn bản các loại, kèo chấp bóng đá hôm nay sẽ chỉ làm điều đúng đắn và lập trình viên sẽ Thông thường không phải lo lắng về nó. Tuy nhiên, trong các trường hợp khác, Đối số sẽ cần phải được chuyển đổi thành một hình thức nhiều hơn Có thể sử dụng trong kèo chấp bóng đá hôm nay. Ví dụ: đây là cách chuyển đổi một đối số loạibyteathành nhị phân không được phân loại Dữ liệu:

My $ arg = Shift;
    $ arg = ~ s! \ (?: \ | (\ d 3))! $ 1? chr (tháng 10 ($ 1)): "\"! ge;

Tương tự, kèo chấp bóng đá hôm nay giá trị được chuyển lại chokèo chấp bóng đá hôm nay14546_14679bytea:

$ retval = ~ s! (\ | [^ -~])! Sprintf ("\%03o", ord ($ 1))! Ge;
    trả về $ retval;

kèo chấp bóng đá hôm nay có thể trả lạikèo chấp bóng đá hôm nayMảng dưới dạng tham chiếu đến các mảng kèo chấp bóng đá hôm nay. Đây là một ví dụ:

Tạo hoặc thay thế kèo chấp bóng đá hôm nay returns_array ()
Trả về văn bản [] [] như $$
    trả về [['a "b', 'c, d'], ['e \ f', 'g']];
$$ Ngôn ngữ plperl;

chọn returns_array ();

Đối số loại tổng hợp được chuyển đến kèo chấp bóng đá hôm nay Tài liệu tham khảo cho băm. Các phím của băm là thuộc tính Tên của loại tổng hợp. Đây là một ví dụ:

Tạo nhân viên bảng (
    tên văn bản,
    Số nguyên cơ sở,
    Số nguyên thưởng
);

Tạo chức năng empcomp (nhân viên) trả về số nguyên như $$
    của tôi ($ emp) = @_;
    trả về $ emp- cơ sở + $ emp- tiền thưởng;
$$ Ngôn ngữ plperl;

Chọn Tên, Empcomp (Nhân viên.*) Từ nhân viên;

Hàm kèo chấp bóng đá hôm nay có thể trả về kết quả loại tổng hợp bằng cách sử dụng cách tiếp cận tương tự: trả về một tham chiếu đến một hàm băm có thuộc tính cần thiết. Ví dụ:

Tạo loại testrowperl As (số nguyên F1, văn bản F2, văn bản F3);

Tạo hoặc thay thế kèo chấp bóng đá hôm nay perl_row () trả về testrowperl dưới dạng $$
    return f2 = 'xin chào', f1 = 1, f3 = 'thế giới';
$$ Ngôn ngữ plperl;

Chọn * từ perl_row ();

Bất kỳ cột nào trong kiểu dữ liệu kết quả được khai báo không phải hiện tại trong băm sẽ được trả về làm giá trị null.

Các chức năng kèo chấp bóng đá hôm nay cũng có thể trả về các bộ của vô hướng hoặc loại tổng hợp. Thông thường bạn sẽ muốn trả lại hàng một thời gian, cả hai để tăng tốc thời gian khởi động và không được xếp hàng toàn bộ kết quả được đặt trong bộ nhớ. Bạn có thể làm điều này vớireturn_nextnhư được minh họa dưới đây. Lưu ý rằng sau lần cuốireturn_next, bạn phải đặtreturnhoặc (tốt hơn)trở lại Undef.

16740_17265

Đối với kèo chấp bóng đá hôm nay bộ kết quả nhỏ, bạn có thể trả về một tham chiếu cho một mảng có chứa vô hướng, tham chiếu đến mảng hoặc tài liệu tham khảo để băm cho kèo chấp bóng đá hôm nay loại đơn giản, loại mảng và kèo chấp bóng đá hôm nay loại tổng hợp, tương ứng. Dưới đây là một số ví dụ đơn giản về việc trả lại toàn bộ kết quả được đặt làm tham chiếu mảng:

Tạo hoặc thay thế hàm perl_set_int (int) Trả về số nguyên setof AS $$
    trả về [0 .. $ _ [0]];
$$ Ngôn ngữ plperl;

Chọn * từ perl_set_int (5);

Tạo hoặc thay thế hàm perl_set () trả về setof testrowperl dưới dạng $$
    trở lại [
        f1 = 1, f2 = 'xin chào', f3 = 'thế giới',
        f1 = 2, f2 = 'hello', f3 = 'postgresql',
        f1 = 3, f2 = 'xin chào', f3 = 'kèo chấp bóng đá hôm nay'
    ];
$$ Ngôn ngữ plperl;

Chọn * từ perl_set ();

Nếu bạn muốn sử dụng18139_18147Pragma Với mã của bạn, cách dễ nhất để làm như vậy làset plperl.use_strictđến ĐÚNG VẬY. Tham số này ảnh hưởng đến kèo chấp bóng đá hôm nay tổng hợp tiếp theo củakèo chấp bóng đá hôm naykèo chấp bóng đá hôm nay chức năng, nhưng không kèo chấp bóng đá hôm nay chức năng đã được biên soạn trong phiên hiện tại. Để đặt tham số trướckèo chấp bóng đá hôm naycó được tải, cần phải thêm"18622_18630"đếnCustom_varable_ClassesDanh sách trongkèo chấp bóng đá hôm nayconf.

Một cách khác để sử dụngnghiêm ngặtPragma là để đặt:

sử dụng nghiêm ngặt;

Trong cơ thể chức năng.