Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang choPostgreSQL : 문서 : 17 : 43.1. pl/배트맨 토토 함수 및 인수Phiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

41.1. Các hàm PL/메이저 토토 사이트 và đối số

Để tạo hàm trong ngôn ngữ PL/메이저 토토 사이트, sử dụng tiêu chuẩnPostgreSQL : 문서Cú pháp:

Tạo chức năngfuncname(đối số loại) Trả vềReturn-Typenhư $$
    # Pl/메이저 토토 사이트 chức năng cơ thể
$$ ngôn ngữ pl메이저 토토 사이트;

Phần thân của hàm là mã Perl thông thường. Trong thực tế, Mã keo PL/메이저 토토 사이트 kết thúc nó bên trong một chương trình con Perl. Một pl/perl chức năng được gọi trong bối cảnh vô hướng, vì vậy nó không thể trả về một danh sách. Bạn có thể trả về các giá trị phi Scalar (mảng, bản ghi và bộ) bằng cách trả về một tham chiếu, như đã thảo luận dưới đây.

PL/메이저 토토 사이트 cũng hỗ trợ các khối mã ẩn danh được gọi bằng스포츠 토토 베트맨 : 문서 : 9.2 : doTuyên bố:

Do $$
    # PL/메이저 토토 사이트 Mã
$$ ngôn ngữ pl메이저 토토 사이트;

Một khối mã ẩn danh không nhận được đối số và bất cứ điều gì Giá trị nó có thể trả lại bị loại bỏ. Nếu không thì nó chỉ hoạt động như một hàm.

Lưu ý:Việc sử dụng chương trình con được đặt tên là nguy hiểm ở 메이저 토토 사이트, đặ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 PL/메이저 토토 사이트 được bọc trong một chương trình con, bất kỳ chương trình con có tên là bạn đặt Bên trong một sẽ được lồng. Nói chung, nó an toàn hơn nhiều Tạo các chương trình con ẩn danh mà bạn gọi là thông qua một coderef. Để 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ụngin The메이저 토토 사이트diagTrang người đàn ông hoặc tìm kiếm trên Internet cho"메이저 토토 사이트 lồng nhau có tên chương trình con".

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.4) 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 (\) Được sử dụng trong phần thân của chức năng (nhìn thấyPhần 4.1.2.1).

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

Ví dụ: một hàm 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 hàm 메이저 토토 사이트_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 cho UTF-8 để sử dụng bên trong PL/메이저 토토 사이트, và sau đó được chuyển đổi từ UTF-8 trở lại mã hóa cơ sở dữ liệu khi trở lại.

Nếu giá trị NULL SQL được chuyển đến hàm, đối số Giá trị sẽ xuất hiện dưới dạng"không xác định"in Perl. Định nghĩa chức năng trên 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ẽ hoạt động như thể chúng là số không). Chúng ta có thể thêmnghiêm ngặtđến Định nghĩa chức năng để thực hiệnPostgreSQLlàm điều gì đó hợp lý hơn: nếu Một giá trị null được thông qua, hàm sẽ không được gọi cả, nhưng sẽ tự động trả về một kết quả null. Cách khác, 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ì Ví dụ, giả sử rằng chúng tôi muốn메이저 토토 사이트_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 hàm 메이저 토토 사이트_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ừ PL/메이저 토토 사이트 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ẩnPostgreSQLBiể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, perl 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 Perl. Ví dụ:decode_byteachức năng có thể được sử dụng để chuyển đổi một Đối số của loạibyteavào không được kiểm soát nhị phân.

Tương tự, các giá trị được chuyển lại choPostgreSQLphải có trong văn bản bên ngoài Định dạng đại diện. Ví dụ:encode_byteaCó thể sử dụng chức năng để thoát khỏi Dữ liệu nhị phân cho giá trị trả về loạibytea.

메이저 토토 사이트 có thể trả lạiPostgreSQLMảng dưới dạng tham chiếu đến các mảng 메이저 토토 사이트. Đây là một ví dụ:

Tạo hoặc thay thế hàm 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 ();

메이저 토토 사이트 PassesPostgreSQLMảng Là một postgresql may mắn :: inserver :: đối tượng mảng. Đối tượng này có thể được coi là một 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ã 메이저 토토 사이트 được viết choPostgreSQLPhiên bản dưới 9.1 để chạy. Vì 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 Tài liệu tham khảo về các mảng tham chiếu theo chiều thấp hơn theo một cách nào đó chung cho mọi lập trình viên perl.

Đối số loại tổng hợp được truyền cho hàm 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 PL/메이저 토토 사이트 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ế hàm 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 hiện tại trong băm sẽ được trả về làm giá trị null.

Các hàm PL/메이저 토토 사이트 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.

Tạo hoặc thay thế chức năng perl_set_int (int)
Trả về số nguyên setof là $$
    foreach (0 .. $ _ [0]) 
        return_next ($ _);

    trả lại Undef;
$$ 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 là $$
    return_next (f1 = 1, f2 = 'xin chào', f3 = 'thế giới');
    return_next (f1 = 2, f2 = 'hello', f3 = 'postgresql');
    return_next (f1 = 3, f2 = 'xin chào', f3 = 'pl/perl');
    trả lại Undef;
$$ ngôn ngữ plperl;

Đối với các 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 các loại đơn giản, loại mảng và các 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 = 'pl/perl'
    ];
$$ 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 pl메이저 토토 사이트.use_strictĐể đúng. Điều này sẽ ảnh hưởng Các phần tổng hợp tiếp theo củaPL/메이저 토토 사이트chức năng, nhưng không phải là chức năng rồi biên soạn trong phiên hiện tại. Để sử dụng toàn cầu vĩnh viễn, bạn có thể bộpl메이저 토토 사이트.use_strictĐúng trongPostgreSql.confTệp.

Để sử dụng vĩnh viễn trong các chức năng cụ thể, bạn có thể chỉ đơn giản là đặt:

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

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

Thetính năngPragma cũng có sẵn ĐẾNsử dụngNếu 메이저 토토 사이트 của bạn là phiên bản 5.10.0 trở lên.