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 / 7.4 / 7.3 / 7.2 / 7.1
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 kèo tỷ số bóng đá euro hôm nay trang chohiện tạiPhiên bản hoặc kèo tỷ số bóng đá euro hôm nay trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

42.13. Chuyển từkèo tỷ số bóng đá euro hôm naykèo tỷ số bóng đá euro hôm nay

Phần này giải thích sự khác biệt giữaPostgreSQL'sPL/PGSQLNgôn ngữ và kèo tỷ số bóng đá euro hôm naykèo tỷ số bóng đá euro hôm nayNgôn ngữ, để giúp các nhà phát triển chuyển các ứng dụng từkèo tỷ số bóng đá euro hôm nay® đếnPostgreSQL.

PL/PGSQLtương tự như kèo tỷ số bóng đá euro hôm nay ở nhiều khía cạnh. Nó là một ngôn ngữ bắt buộc có cấu trúc khối và tất cả các biến phải được khai báo. Bài tập, vòng lặp và điều kiện là tương tự nhau. Sự khác biệt chính bạn nên ghi nhớ khi chuyển từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL12974_12981

  • 13113_13234kèo tỷ số bóng đá euro hôm naycoi nó là tên cột. Điều này tương ứng vớiPL/PGSQL'splpgsql.varable_conflict=use_columnHành vi, không phải là mặc định, như được giải thích trongPhần 42.11.1. Tốt nhất là nên tránh những sự mơ hồ như vậy ngay từ đầu, nhưng nếu bạn phải chuyển kèo tỷ số bóng đá euro hôm nay lượng lớn mã phụ thuộc vào hành vi này, cài đặtVarable_conflictcó thể là giải pháp tốt nhất.

  • inPostgreSQLCơ thể chức kèo tỷ số bóng đá euro hôm nay phải được viết dưới dạng chuỗi theo nghĩa đen. Do đó, bạn cần sử dụng báo giá đô la hoặc thoát khỏi các trích dẫn đơn trong cơ thể chức kèo tỷ số bóng đá euro hôm nay. (Nhìn thấyPhần 42.12.1.)

  • Tên loại dữ liệu thường cần dịch. Ví dụ: trong các giá trị chuỗi kèo tỷ số bóng đá euro hôm nay thường được khai báo là loạiVarchar2, là loại không chuẩn SQL. TRONGPostgreSQL, sử dụng loạiVarcharhoặcTextThay vào đó. Tương tự, thay thế loạiSốvớiSốhoặc sử dụng kèo tỷ số bóng đá euro hôm nay số loại dữ liệu số khác nếu có kèo tỷ số bóng đá euro hôm nay loại thích hợp hơn.

  • Thay vì các gói, hãy sử dụng các lược đồ để sắp xếp các chức kèo tỷ số bóng đá euro hôm nay của bạn thành các nhóm.

  • Vì không có gói nào, nên cũng không có biến cấp gói. Điều này có phần khó chịu. Thay vào đó, bạn có thể giữ trạng thái mỗi phiên trong các bảng tạm thời.

  • Số nguyênchovòng lặp vớiđảo ngượclàm việc khác nhau:kèo tỷ số bóng đá euro hôm nayĐếm xuống từ số thứ hai xuống số thứ nhất, trong khiPL/PGSQLĐếm xuống từ số thứ nhất xuống số thứ hai, yêu cầu giới hạn vòng lặp được hoán đổi khi chuyển. Sự không tương thích này là không may nhưng không có khả kèo tỷ số bóng đá euro hôm nay thay đổi. (Nhìn thấyPhần 42.6.5.5.)

  • choVòng lặp qua các truy vấn (trừ con trỏ) cũng hoạt động khác nhau: Biến mục tiêu phải được khai báo, trong khikèo tỷ số bóng đá euro hôm nayLuôn tuyên bố chúng ngầm. kèo tỷ số bóng đá euro hôm nay lợi thế của điều này là các giá trị biến vẫn có thể truy cập được sau khi vòng lặp thoát.

  • Có nhiều sự khác biệt về chứng minh cho việc sử dụng các biến con trỏ.

42.13.1. Bước vào ví dụ

Ví dụ 42.9Hiển thị cách chuyển chức kèo tỷ số bóng đá euro hôm nay đơn giản từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL.

Ví dụ 42.9. Chuyển kèo tỷ số bóng đá euro hôm nay chức năng đơn giản từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL

Đây là kèo tỷ số bóng đá euro hôm naykèo tỷ số bóng đá euro hôm nay kèo tỷ số bóng đá euro hôm nayHàm:

17240_17529

Hãy xem qua chức kèo tỷ số bóng đá euro hôm nay này và xem sự khác biệt so vớiPL/PGSQL:

  • tên loạiVarchar2phải được thay đổi thànhVarcharhoặcText. Trong các ví dụ trong phần này, chúng tôi sẽ sử dụngVarchar, nhưngTextthường là lựa chọn tốt hơn nếu bạn không cần giới hạn độ dài chuỗi cụ thể.

  • ThereturnTừ khóa trong nguyên mẫu hàm (không phải cơ thể hàm) trở thànhreturninPostgreSQL. Cũng,trở thànhASvà bạn cần thêmNgôn ngữmệnh đề vìPL/PGSQLkhông phải là ngôn ngữ chức kèo tỷ số bóng đá euro hôm nay duy nhất có thể.

  • inPostgreSQL, cơ thể chức năng được coi là kèo tỷ số bóng đá euro hôm nay chuỗi theo nghĩa đen, vì vậy bạn cần sử dụng dấu ngoặc kép hoặc báo giá đô la xung quanh nó. Điều này thay thế cho việc chấm dứt/Trong cách tiếp cận của kèo tỷ số bóng đá euro hôm nay.

  • TheHiển thị lỗiLệnh không tồn tại trongPostgreSQLvà không cần thiết vì lỗi được báo cáo tự động.

Đây là cách chức kèo tỷ số bóng đá euro hôm nay này trông như thế nào khi được chuyển sangPostgreSQL:

Tạo hoặc thay thế chức kèo tỷ số bóng đá euro hôm nay CS_FMT_BROWSER_VESTER (V_Name Varchar,
                                                  v_version varchar)
Trả lại varchar là $$
BẮT ĐẦU
    Nếu v_version là null thì
        Trả lại v_name;
    Kết thúc nếu;
    Trả lại v_name || '/' || v_version;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Ví dụ 42.10Hiển thị cách chuyển kèo tỷ số bóng đá euro hôm nay hàm tạo chức năng khác và cách xử lý các vấn đề trích dẫn tiếp theo.

Ví dụ 42.10. Chuyển kèo tỷ số bóng đá euro hôm nay hàm tạo chức năng khác từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL

Quy trình sau lấy hàng từ AChọn20469_20530nếuCâu lệnh, vì lợi ích của hiệu quả.

Đây là phiên bản kèo tỷ số bóng đá euro hôm nay:

Tạo hoặc thay thế quy trình CS_UPDATE_REFERRER_TYPE_PROC IS
    Giới thiệu con trỏ_Keys là
        Chọn * Từ CS_Referrer_Keys
        Đặt hàng bởi try_order;
    func_cmd varchar (4000);
BẮT ĐẦU
    func_cmd: = 'tạo hoặc thay thế chức kèo tỷ số bóng đá euro hôm nay cs_find_referrer_type (v_host trong varchar2,
                 v_domain trong varchar2, v_url trong varchar2) return varchar2 bắt đầu ';

    Cho người giới thiệu_key trong giới thiệu_keys vòng lặp
        func_cmd: = func_cmd ||
          'Nếu v_' || giới thiệu_key.kind
          || 'Thích' '' || giới thiệu_key.key_string
          || '' 'Sau đó trả về' '' || giới thiệu_key.referrer_type
          || '' '; Kết thúc nếu; ';
    Kết thúc vòng lặp;

    func_cmd: = func_cmd || 'Trả lại null; KẾT THÚC;';

    Thực hiện func_cmd ngay lập tức;
KẾT THÚC;
/
Hiển thị lỗi;

Đây là cách chức kèo tỷ số bóng đá euro hôm nay này kết thúc trongPostgreSQL:

21565_22543

Lưu ý cách cơ thể của chức kèo tỷ số bóng đá euro hôm nay được xây dựng riêng biệt và được truyền quaquote_literalĐể tăng gấp đôi bất kỳ dấu nào trong đó. Kỹ thuật này là cần thiết bởi vì chúng tôi không thể sử dụng báo giá đô la kèo tỷ số bóng đá euro hôm nay cách an toàn để xác định chức năng mới: Chúng tôi không biết chắc chắn những chuỗi nào sẽ được nội suy từgiới thiệu_key.key_stringTrường. (Chúng tôi đang giả sử ở đây rằnggiới thiệu_key.kindcó thể được tin tưởng để luôn luôn làmáy chủ, DOMAINhoặcurl, nhưnggiới thiệu_key.key_stringCó thể là bất cứ điều gì, đặc biệt là nó có thể chứa các dấu hiệu đô la.) Hàm này thực sự là một cải tiến trên kèo tỷ số bóng đá euro hôm nay gốc, vì nó sẽ không tạo ra mã bị hỏng khigiới thiệu_key.key_stringhoặcgiới thiệu_key.referrer_typechứa dấu ngoặc kép.


Ví dụ 42.11Hiển thị cách chuyển chức kèo tỷ số bóng đá euro hôm nay vớiouttham số và thao tác chuỗi.POSTGRESQLkhông có tích hợpusterHàm, nhưng bạn có thể tạo kèo tỷ số bóng đá euro hôm nay cách sử dụng kết hợp các chức năng khác. TRONGPhần 42.13.3Có kèo tỷ số bóng đá euro hôm nayPL/PGSQLTriển khaiustermà bạn có thể sử dụng để làm cho việc chuyển đổi của bạn dễ dàng hơn.

Ví dụ 42.11. Chuyển kèo tỷ số bóng đá euro hôm nay thủ tục với thao tác chuỗi vàouttham số từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL

saukèo tỷ số bóng đá euro hôm nayQuy trình kèo tỷ số bóng đá euro hôm nay được sử dụng để phân tích URL và trả về một số phần tử (máy chủ, đường dẫn và truy vấn).

Đây là phiên bản kèo tỷ số bóng đá euro hôm nay:

24952_25836

Đây là bản dịch có thể thànhPL/PGSQL:

25971_26867

Hàm này có thể được sử dụng như thế này:

Chọn * từ cs_parse_url ('http://foobar.com/query.cgi?baz');

Ví dụ 42.12Hiển thị cách chuyển một quy trình sử dụng nhiều tính năng dành riêng cho kèo tỷ số bóng đá euro hôm nay.

Ví dụ 42.12. Chuyển kèo tỷ số bóng đá euro hôm nay thủ tục từkèo tỷ số bóng đá euro hôm nayđếnPL/PGSQL

Phiên bản kèo tỷ số bóng đá euro hôm nay:

Tạo hoặc thay thế thủ tục CS_CREATE_JOB (V_JOB_ID in Integer) IS IS
    A_Rasty_Job_Count Integer;
BẮT ĐẦU
    Bảng khóa CS_JOBS ở chế độ độc quyền;

    Chọn Đếm (*) vào a_rasty_job_count từ cs_jobs trong đó end_stamp là null;

    Nếu a_rasty_job_count 0 thì
        LÀM; - Khóa miễn phí
        RAISE_APPLICATION_ERROR (-20000,
                 'Không thể tạo kèo tỷ số bóng đá euro hôm nay công việc mới: kèo tỷ số bóng đá euro hôm nay công việc hiện đang chạy.');
    Kết thúc nếu;

    Xóa khỏi CS_Active_Job;
    Chèn vào các giá trị CS_Active_Job (Job_id) (v_job_id);

    BẮT ĐẦU
        Chèn vào các giá trị CS_JOBS (JOB_ID, start_stamp) (v_job_id, now ());
    NGOẠI LỆ
        Khi DUP_VAL_ON_INDEX thì NULL; - Đừng lo lắng nếu nó đã tồn tại
    KẾT THÚC;
    LÀM;
KẾT THÚC;
/
Hiển thị lỗi

Đây là cách chúng tôi có thể chuyển thủ tục này sangPL/PGSQL:

28567_28963(1)
    Kết thúc nếu;

    Xóa khỏi CS_Active_Job;
    Chèn vào các giá trị CS_Active_Job (Job_id) (v_job_id);

    BẮT ĐẦU
        Chèn vào các giá trị CS_JOBS (JOB_ID, start_stamp) (v_job_id, now ());
    NGOẠI LỆ
        Khi độc đáo_violation thì -(2)
            - Đừng lo lắng nếu nó đã tồn tại
    KẾT THÚC;
    LÀM;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

(1)

Cú pháp củaNângkhác biệt đáng kể so với tuyên bố của kèo tỷ số bóng đá euro hôm nay, mặc dù trường hợp cơ bảnNâng EXABY_NAMEhoạt động tương tự.

(2)

Tên ngoại lệ được hỗ trợ bởiPL/PGSQLkhác với kèo tỷ số bóng đá euro hôm nay. Tập hợp các tên ngoại lệ tích hợp lớn hơn nhiều (xemPhụ lục A). Hiện tại không có cách nào để khai báo tên ngoại lệ do người dùng xác định, mặc dù bạn có thể ném các giá trị SQLState chọn người dùng.


42.13.2. Những thứ khác để xem

Phần này giải thích một vài điều khác cần xem khi chuyển kèo tỷ số bóng đá euro hôm naykèo tỷ số bóng đá euro hôm naychức kèo tỷ số bóng đá euro hôm nay thànhPostgreSQL.

42.13.2.1. Rollback ẩn sau các trường hợp ngoại lệ

31416_31421PL/PGSQL, khi kèo tỷ số bóng đá euro hôm nay ngoại lệ bị bắt bởiNgoại lệmệnh đề, tất cả các thay đổi cơ sở dữ liệu kể từ khi khốibắt đầuđược tự động quay lại. Nghĩa là, hành vi này tương đương với những gì bạn nhận được trong kèo tỷ số bóng đá euro hôm nay với:

Bắt đầu
    SavePoint S1;
    ... Mã ở đây ...
NGOẠI LỆ
    Khi ... sau đó
        Rollback sang S1;
        ... Mã ở đây ...
    Khi ... sau đó
        Rollback sang S1;
        ... Mã ở đây ...
KẾT THÚC;

Nếu bạn đang dịch một quy trình kèo tỷ số bóng đá euro hôm nay sử dụngSavePointrollback toTheo kiểu này, nhiệm vụ của bạn rất dễ dàng: Chỉ cần bỏ quaSavePointrollback to. Nếu bạn có kèo tỷ số bóng đá euro hôm nay quy trình sử dụngSavePointrollback toTheo kèo tỷ số bóng đá euro hôm nay cách khác thì kèo tỷ số bóng đá euro hôm nay số suy nghĩ thực tế sẽ được yêu cầu.

42.13.2.2.thực thi

ThePL/PGSQLPhiên bảnthực thihoạt động tương tự nhưkèo tỷ số bóng đá euro hôm nayPhiên bản, nhưng bạn phải nhớ sử dụngquote_literalQUOTE_IDENTnhư được mô tả trongPhần 42.5.4. Cấu trúc của loạiThực thi 'Chọn * từ $ 1';Sẽ không hoạt động đáng tin cậy trừ khi bạn sử dụng các chức kèo tỷ số bóng đá euro hôm nay này.

42.13.2.3. Tối ưu hóaPL/PGSQLChức kèo tỷ số bóng đá euro hôm nay

PostgreSQLcung cấp cho bạn hai bộ sửa đổi tạo chức kèo tỷ số bóng đá euro hôm nay để tối ưu hóa thực thi:biến động(Cho dù hàm luôn trả về cùng kèo tỷ số bóng đá euro hôm nay kết quả khi đưa ra cùng kèo tỷ số bóng đá euro hôm nay đối số) vàsự nghiêm ngặt(Cho dù chức kèo tỷ số bóng đá euro hôm nay có trả về NULL hay không nếu bất kỳ đối số nào là NULL). Tham khảo ý kiếnTạo chức kèo tỷ số bóng đá euro hôm naytrang tham chiếu để biết chi tiết.

Khi sử dụng các thuộc tính tối ưu hóa này, của bạn34223_34240Câu lệnh có thể trông giống như thế này:

Tạo hàm foo (...) Trả về số nguyên dưới dạng $$
...
$$ ngôn ngữ plpgsql nghiêm ngặt bất biến;

42.13.3. Phụ lục

Phần này chứa mã cho một tập hợp tương thích kèo tỷ số bóng đá euro hôm nayusterCác chức kèo tỷ số bóng đá euro hôm nay mà bạn có thể sử dụng để đơn giản hóa các nỗ lực chuyển đổi của mình.

34915_38120