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 / 8.1 / 8.0
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 kèo bóng đá euro các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

39.4. Giá trị toàn cầu kèo bóng đá euro

Bạn có thể sử dụng băm kèo bóng đá euro%_sharedĐể lưu trữ dữ liệu, bao gồm các tài liệu tham khảo mã, giữa các cuộc gọi chức năng kèo bóng đá euro suốt vòng đời của phiên hiện tại.

Đây là một ví dụ đơn giản cho dữ liệu được chia sẻ:

Tạo hoặc thay thế chức năng set_var (tên văn bản, văn bản val) Trả về văn bản dưới dạng $$
    if ($ _shared $ _ [0] = $ _ [1]) 
        trả lại 'ok';
     khác 
        Trả về "Không thể đặt biến được chia sẻ $ _ [0] thành $ _ [1]";

Đây là một ví dụ phức tạp hơn một chút khi sử dụng mã thẩm quyền giải quyết:

Tạo hoặc thay thế hàm myfuncs () trả về void dưới dạng $$
    $ _Shared myquote = sub 
        $ arg của tôi = thay đổi;
        $ arg = ~ s/(['\])/\ $ 1/g;
        trả về "'$ arg'";
    ;
$$ Ngôn ngữ plperl;

Chọn myfuncs (); / * Khởi tạo chức năng */

/ * Đặt chức năng sử dụng hàm báo giá */

Tạo hoặc thay thế chức năng use_quote (văn bản) trả về văn bản dưới dạng $$
    $ text_to_quote = shift;
    $ qfunc của tôi = $ _shared myquote;
    return & $ qfunc ($ text_to_quote);
$$ ngôn ngữ plperl;

(Bạn có thể đã thay thế ở trên bằng một linerreturn $ _shared myquote- ($ _ [0]);AT chi phí của khả năng đọc.)

Vì lý do bảo mật, PL/Perl thực thi các chức năng được gọi bởi bất kỳ Một vai trò SQL kèo bóng đá euro một trình thông dịch Perl riêng cho vai trò đó. Cái này ngăn chặn sự can thiệp vô tình hoặc độc hại của một người dùng hành vi của các chức năng PL/Perl của người dùng khác. Mỗi cái như vậy thông dịch có giá trị riêng của nó%_sharedBiến và trạng thái toàn cầu khác. Như vậy, Hai hàm kèo bóng đá euro sẽ chia sẻ cùng một giá trị của%_sharedNếu và chỉ khi chúng được thực thi bởi cùng vai trò SQL. kèo bóng đá euro một ứng dụng kèo bóng đá euro đó một phiên duy nhất Thực thi mã dưới nhiều vai trò SQL (thông quabảo mật xác địnhchức năng, sử dụngĐặt vai trò, v.v.) Bạn có thể cần thực hiện các bước rõ ràng Để đảm bảo rằng các chức năng kèo bóng đá euro có thể chia sẻ dữ liệu qua%_shared. Để làm điều đó, hãy đảm bảo rằng các chức năng Điều đó nên giao tiếp được sở hữu bởi cùng một người dùng và đánh dấu chúngbảo mật xác định. Tất nhiên bạn phải Hãy cẩn thận rằng các chức năng như vậy không thể được sử dụng để làm bất cứ điều gì ngoài ý muốn.