Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển: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 PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiê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ế.

45.1. cách đọc kèo bóng đá số

Để tạo cách đọc kèo bóng đá trong ngôn ngữ PL/Perl, 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ư $$

Cơ thể của cách đọc kèo bóng đá là mã perl thông thường. Trong thực tế, mã keo PL/Perl kết thúc nó bên trong một chương trình con Perl.

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

cách đọc kèo bóng đá cũng hỗ trợ các khối mã ẩn danh được gọi bằngdocâu lệnh:

Do $$

Một khối mã ẩn danh không nhận được đối số và bất kỳ giá trị nào mà nó có thể trả lại đều bị loại bỏ. Nếu không thì nó hoạt động giống như một cách đọc kèo bóng đá.

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 cách đọc kèo bóng đá đượ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.biế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 lồng nhau được đặt tên là chương trình conHồi.

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.4) cho hằng số chuỗi. Nếu bạn chọn sử dụng Escape String SyntaxE '', 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 cách đọc kèo bóng đá (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 cách đọc kèo bóng đá.

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

Tạo cách đọc kèo bóng đá perl_max (số nguyên, số nguyên) Trả về số nguyên dưới dạng $$

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 cách đọc kèo bóng đá, 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 cách đọc kèo bóng đá, giá trị đối số sẽ xuất hiện dưới dạngkhông xác địnhHồiTrong 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 cách đọc kèo cách đọc kèo bóng đáo null (trên thực tế, nó sẽ hoạt động như thể chúng là số 0).nghiêm ngặtĐịnh nghĩa chức năng để thực hiệnPostgreSQLLàm điều gì đó hợp lý hơn: Nếu giá trị null được truyền, cách đọc kèo bóng đá 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.perl_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 cách đọc kèo bóng đá perl_max (số nguyên, số nguyên) Trả về số nguyên dưới dạng $$

Như được hiển thị ở trên, để trả về giá trị null SQL từ cách đọc kèo bóng đá, 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à 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 kiểu dữ liệu liên quan. Trong trường hợp các 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ó.decode_byteacách đọc kèo bóng đá 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ự, các giá trị được chuyển lại choPostgreSQLphải ở định dạng biểu diễn văn bản bên ngoài. Ví dụ:ENCODE_BYTEAcách đọc kèo bóng đá có thể được sử dụng để thoát dữ liệu nhị phân cho giá trị trả về loạibytea.

perl có thể trả lạiPostgreSQLMảng làm tài liệu tham khảo cho các mảng Perl. Đây là một ví dụ:

Tạo hoặc thay thế cách đọc kèo bóng đá returns_array ()

Perl PassesPostgreSQLmảng như một người may mắnPostgresql :: 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 cho​​PostgreSQLPhiê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 $$

Lưu ý

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

Đối số loại tổng hợp được truyền đến cách đọc kèo bóng đá 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.

Tạo nhân viên bảng (

cách đọc kèo bóng đá có thể trả về kết quả loại tổng hợp bằng cách sử dụng cùng một cách tiếp cận: trả về một tham chiếu đến một hàm băm có cá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);

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ự, đối số đầu ra của các 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ác cách đọc kèo bóng đá 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ớ.return_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.

Tạo hoặc thay thế chức năng perl_set_int (int)

Đối với các 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 các 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ế cách đọc kèo bóng đá perl_set_int (int) Trả về số nguyên setof AS $$

Nếu bạn muốn sử dụngnghiêm ngặtPragma với mã của bạn, bạn có một cách đọc kèo bóng đá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 các phần tổng hợp tiếp theo củacách đọc kèo bóng đácách đọc kèo bóng đá, nhưng không phải là chức năng đã được biên dịch trong phiên hiện tại. Để sử dụng toàn cầu vĩnh viễn, bạn có thể đặtplperl.use_strictĐúng trongPostgreSql.confTệp.

Để sử dụng vĩnh viễn trong các 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.