Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
4816_492718 / 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 bóng đá euro.
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 bóng đá euro phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

44.1. kèo bóng đá euro số

Để tạo hàm trong ngôn ngữ kèo bóng đá euro, sử dụng tiêu chuẩnTạo chức năngCú pháp:

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

10795_11094

Trong quy trình kèo bóng đá euro, bất kỳ giá trị trả về nào từ mã Perl đều bị bỏ qua.

kèo bóng đá euro cũng hỗ trợ các khối mã ẩn danh được gọi bằngdoTuyên bố:

Do $$
    # kèo bóng đá euro Mã
$$ ngôn ngữ plperl;

11434_11574

Lưu ý

Việc sử dụng các chương trình con lồng nhau được đặt tên là nguy hiểm ở Perl, đặc biệt nếu chúng đề cập đến các biến từ vựng trong phạm vi kèm theo. Bởi vì một chức năng kèo bóng đá euro đượ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 bên trong một sẽ được lồng nhau. Nói chung, việc tạo các chương trình con ẩn danh mà bạn gọi là an toàn hơn rất nhiều. Để biết thêm thông tin, hãy xem các mục choBiến "%s" sẽ không được chia sẻbiến "%s" không khả dụngtrongPerldiagtrang người đàn ông hoặc tìm kiếm internet choPerl Nested Subroutine.

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 hằng số chuỗi. Thường thuận tiện nhất khi sử dụng báo giá đô la (xemPhần 4.1.2.412705_12776E '', bạn phải tăng gấp đôi bất kỳ dấu nào đơn lẻ (') và Backslashes (\) Được sử dụng trong phần thân của kèo bóng đá euro (xemPhần 4.1.2.1).

Đối số và kết quả được xử lý như trong bất kỳ chương trình con Perl nào khác: Đối số được truyền trong@_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 kèo bóng đá euro.

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

Tạo kèo bóng đá euro 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;

Lưu ý

Đối số sẽ được chuyển đổi từ mã hóa cơ sở dữ liệu thành UTF-8 để sử dụng bên trong kèo bóng đá euro, sau đó được chuyển đổi từ UTF-8 trở lại mã hóa cơ sở dữ liệu khi trả về.

Nếu giá trị null SQLđược chuyển đến kèo bóng đá euro, giá trị đối số sẽ xuất hiện dưới dạngkhông xác địnhTrong Perl. Định nghĩa chức năng trên sẽ không hoạt động rất độc đáo với kèo bóng đá euro đầu vào null (trên thực tế, nó sẽ hoạt động như thể chúng là số 0). Chúng ta có thể thêmnghiêm ngặtĐịnh nghĩa chức năng để thực hiệnkèo bóng đá euroLàm điều gì đó hợp lý hơn: Nếu giá trị null được thông qua, kèo bóng đá euro sẽ không được gọi cả, nhưng sẽ tự động trả về kết quả null. Ngoài ra, chúng tôi có thể kiểm tra các đầu vào không xác định trong cơ thể chức năng. Ví dụ: giả sử rằng chúng tôi muốnperl_maxVới một đối số 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 bóng đá euro perl_max (số nguyên, số nguyên) Trả về số nguyên dưới dạng $$
    của tôi ($ x, $ y) = @_;
    if (không xác định $ x) 
        trả lại undef nếu không được xác định $ y;
        trả lại $ y;

    trả về $ x nếu không được xác định $ y;
    trả về $ x nếu $ x $ y;
    trả lại $ y;
$$ ngôn ngữ plperl;

Như được hiển thị ở trên, để trả về giá trị null SQL từ hàm kèo bóng đá euro, trả về giá trị không xác định. Điều này có thể được thực hiện cho dù chức năng có 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à một tham chiếu là một chuỗi, nằm trong tiêu chuẩnkèo bóng đá euroBiểu diễn văn bản bên ngoài cho kiểu dữ liệu liên quan. Trong trường hợp kèo bóng đá euro loại văn bản hoặc số thông thường, Perl sẽ chỉ làm điều đúng đắn và người lập trình thường sẽ không phải lo lắng về nó. Tuy nhiên, trong kèo bóng đá euro 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 có thể sử dụng nhiều hơn trong Perl. Ví dụ:decode_byteakèo bóng đá euro có thể được sử dụng để chuyển đổi đối số loạibyteathành nhị phân không được phân loại.

Tương tự, kèo bóng đá euro giá trị được truyền lại chokèo bóng đá europhải ở định dạng biểu diễn văn bản bên ngoài. Ví dụ:encode_byteaCó thể sử dụng chức năng để thoát dữ liệu nhị phân cho giá trị trả về loạibytea.

Perl có thể trả lạikèo bóng đá euroMảng dưới dạng tham chiếu đến kèo bóng đá euro mảng Perl. Đây là một ví dụ:

Tạo hoặc thay thế kèo bóng đá euro 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 ();

Perl Passeskèo bóng đá euromảng như một người may mắnkèo bóng đá euro :: Inserver :: mảngĐối tượng. Đối tượng này có thể được coi là tham chiếu mảng hoặc một chuỗi, cho phép khả năng tương thích ngược với mã perl được viết chokèo bóng đá euroPhiên bản dưới 9.1 để chạy. Ví dụ:

Tạo hoặc thay thế chức năng Concat_array_elements (Text []) Trả về văn bản dưới dạng $$
    $ arg của tôi = thay đổi;
    $ result của tôi = "";
    trả về undef if (! định nghĩa $ arg);

    # như một tham chiếu mảng
    for (@$ arg) 
        $ result. = $ _;

    # Cũng hoạt động như một chuỗi
    $ result. = $ arg;

    Trả về $ kết quả;
$$ Ngôn ngữ plperl;

Chọn Concat_Array_elements (mảng ['pl', '/', 'perl']);

Lưu ý

Mảng đa chiều được biểu diễn dưới dạng tham chiếu đến kèo bóng đá euro mảng tham chiếu theo chiều thấp hơn theo cách phổ biến cho mọi lập trình viên Perl.

Các đối số loại tổng hợp được chuyển đến kèo bóng đá euro như các tài liệu tham khảo cho băm. Các khóa của băm là tên thuộc tính 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;

17953_18109

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 bóng đá euro 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 có trong băm sẽ được trả về làm giá trị null.

Tương tự, kèo bóng đá euro đối số đầu ra của kèo bóng đá euro thủ tục có thể được trả về dưới dạng tham chiếu băm:

Tạo quy trình perl_triple (inout a integer, inout b integer) AS $$
    của tôi ($ a, $ b) = @_;
    trả về a = $ a * 3, b = $ b * 3;
$$ Ngôn ngữ plperl;

Gọi Perl_Triple (5, 10);

Các hàm kèo bóng đá euro cũng có thể trả về các bộ của các loại vô hướng hoặc tổng hợp. Thông thường, bạn sẽ muốn trả lại một hàng một lần, cả hai để tăng tốc thời gian khởi động và để không 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)return undef.

19330_19855

Đối với kèo bóng đá euro bộ kết quả nhỏ, bạn có thể trả về một tham chiếu đến một mảng có chứa vô hướng, tham chiếu đến mảng hoặc tham chiếu đến băm cho kèo bóng đá euro loại đơn giản, loại mảng và 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ả về toàn bộ kết quả được đặt làm tham chiếu mảng:

Tạo hoặc thay thế chức năng 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 bóng đá euro'
    ];
$$ Ngôn ngữ plperl;

Chọn * từ perl_set ();

Nếu bạn muốn sử dụngnghiêm ngặtPragma với mã của bạn, bạn có một vài tùy chọn. Để sử dụng toàn cầu tạm thời, bạn có thểset plperl.use_strictĐúng. Điều này sẽ ảnh hưởng đến kèo bóng đá euro phần tổng hợp tiếp theo củakèo bóng đá euro20987_21097plperl.use_strictĐúng trongkèo bóng đá euroconfTệp.

Để sử dụng vĩnh viễn trong kèo bóng đá euro chức năng cụ thể mà bạn có thể đặt đơn giản:

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

Ở đầu cơ thể chức năng.

Thetính năngPragma cũng có sẵn chosử dụngNếu perl của bạn là phiên bản 5.10.0 trở lên.