PostgreSQL 9.0.23 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 39.PL/PGSQL - SQLNgôn ngữ thủ tục | Tiếp theo |
Phần này giải thích sự khác biệt giữaPostgreSQL'sPL/PGSQLNgôn ngữ và Oraclekèo bóng đá việt namNgôn ngữ, để giúp các nhà phát triển Port các ứng dụng từOracle® đếnPostgreSQL.
PL/PGSQLtương tự như kèo bóng đá việt nam trong 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, Điều kiện là tương tự. Sự khác biệt chính bạn nên giữ Tâm trí khi chuyển từkèo bóng đá việt namđếnPL/PGSQLlà:
Nếu kèo bóng đá việt nam tên được sử dụng trong lệnh SQL có thể là kèo bóng đá việt nam cột Tên của bảng hoặc tham chiếu đến kèo bóng đá việt nam biến của hàm,kèo bóng đá việt namcoi nó là kèo bóng đá việt nam cột tên. Đ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ư đã giải thích trongPhần 39.10.1. Thường tốt nhất là tránh những sự mơ hồ như vậy trong vị trí đầu tiên, nhưng nếu bạn phải kèo bóng đá việt nam một lượng lớn mã Điều đó phụ thuộc vào hành vi này, cài đặtVarable_conflictcó thể là tốt nhất giải pháp.
inPostgreSQLThe Chức kèo bóng đá việt nam cơ thể phải được viết như một chuỗi theo nghĩa đen. Vì thế Bạn cần sử dụng trích dẫn đô la hoặc thoát khỏi các trích dẫn đơn trong cơ thể chức kèo bóng đá việt nam. (Nhìn thấyPhần 39.11.1.)
Thay vì các gói, hãy sử dụng các lược đồ để sắp xếp Chức kèo bóng đá việt nam thành các nhóm.
Vì không có gói Biến kèo bóng đá việt nam trong hai. Điều này có phần khó chịu. Bạn có thể giữ thay vào đó, trạng thái mỗi phiên trong 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 bóng đá việt namĐếm xuống từ lần thứ hai số đến lần đầu tiên, trong khiPL/PGSQLĐếm xuống từ lần đầu tiên số đến thứ hai, yêu cầu giới hạn vòng lặp được hoán đổi Khi kèo bóng đá việt nam. Sự không tương thích này là không may nhưng là Không có khả năng được thay đổi. (Nhìn thấyPhần 39.6.3.5.)
chovòng lặp qua các truy vấn (khác hơn 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 bóng đá việt namLuôn tuyên bố chúng ngầm. kèo bóng đá việt nam lợi thế của điều này là các giá trị biến vẫn còn có thể truy cập 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 Biến con trỏ.
Ví dụ 39-6Hiển thị cách kèo bóng đá việt nam chức năng đơn giản từkèo bóng đá việt namđếnPL/PGSQL.
Ví dụ 39-6. kèo bóng đá việt nam một chức năng đơn giản từkèo bóng đá việt namđếnPL/PGSQL
Đây là kèo bóng đá việt namOracle kèo bóng đá việt namchức kèo bóng đá việt nam:
Tạo hoặc thay thế chức kèo bóng đá việt nam 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; / Hiển thị lỗi;
Hãy xem qua chức kèo bóng đá việt nam này và xem sự khác biệt so vớiPL/PGSQL:
ThereturnTừ khóa trong Nguyên mẫu chức kèo bóng đá việt nam (không phải cơ thể chức kèo bóng đá việt nam) trở thànhreturninPostgreSQL. Cũng,làtrở thànhAS,, và bạn cần thêm kèo bóng đá việt namNgôn ngữmệnh đề vìPL/PGSQLkhông phải là ngôn ngữ chức kèo bóng đá việt nam duy nhất có thể.
inPostgreSQL, The Cơ thể chức kèo bóng đá việt nam được coi là một 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 Oracle.
TheHiển thị lỗiLệnh không không tồn tại trongPostgreSQL,, và không cần thiết vì lỗi được báo cáo tự động.
Đây là cách chức năng này trông như thế nào khi được kèo bóng đá việt nam sangPostgreSQL:
Tạo hoặc thay thế chức kèo bóng đá việt nam cs_fmt_browser_version (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ụ 39-7Hiển thị cách kèo bóng đá việt nam chức năng tạo ra một hàm khác chức năng và cách xử lý các vấn đề trích dẫn tiếp theo.
Ví dụ 39-7. kèo bóng đá việt nam một chức năng tạo ra Một chức năng khác từkèo bóng đá việt namđếnPL/PGSQL
Quy trình sau lấy hàng từ AChọnTuyên bố và xây dựng một chức kèo bóng đá việt nam lớn với kết quả trongnếuCâu lệnh, vì lợi ích của hiệu quả.
Đây là phiên bản Oracle:
18065_18800
Đây là cách chức kèo bóng đá việt nam này kết thúc trongPOSTGRESQL:
Tạo hoặc thay thế chức kèo bóng đá việt nam CS_UPDATE_REFERRER_TYPE_PROC () Trả về void As $ func TUYÊN BỐ Giới thiệu_Keys con trỏ là Chọn * Từ CS_Referrer_Keys Đặt hàng bởi try_order; văn bản func_body; văn bản func_cmd; BẮT ĐẦU func_body: = 'bắt đầu'; Cho người giới thiệu_key trong giới thiệu_keys vòng lặp func_body: = func_body || 'Nếu v_' || giới thiệu_key.kind || 'Thích' || QUOTE_LITHER (giới thiệu_key.key_string) || 'Sau đó trả lại' || QUOTE_LITHER (giới thiệu_key.referrer_type) || '; Kết thúc nếu; ' ; Kết thúc vòng lặp; func_body: = func_body || 'Trả lại null; KẾT THÚC;'; func_cmd: = 'Tạo hoặc thay thế chức kèo bóng đá việt nam cs_find_referrer_type (v_host varchar, v_domain varchar, v_url varchar) Trả về varchar là ' || quote_literal (func_body) || 'Ngôn ngữ plpgsql;' ; Thực thi func_cmd; KẾT THÚC; $ func $ ngôn ngữ plpgsql;
Lưu ý cách cơ thể của chức kèo bóng đá việt nam được xây dựng riêng biệt và đi quaquote_literalđến Nhân đôi bất kỳ dấu ngoặc kép trong đó. Kỹ thuật này là cần thiết bởi vì chúng tôi không thể sử dụng trích dẫn đô la một cách an toàn để xác định Chức kèo bóng đá việt nam mới: Chúng tôi không biết chắc chắn các chuỗi sẽ là gì được nội suy từgiới thiệu_key.key_stringTrường. (Chúng tôi là giả sử ở đâygiới thiệu_key.kindCó thể luôn luôn tin tưởng vào làmáy chủ, DOMAINhoặcurl, nhưnggiới thiệu_key.key_string20650_20847giới thiệu_key.key_stringhoặcgiới thiệu_key.referrer_typechứa báo giá Marks.
Ví dụ
39-8Hiển thị cách kèo bóng đá việt nam chức năng vớiouttham số và thao tác chuỗi.PostgreSQLkhông có
tích hợpuster
Hàm, nhưng bạn
có thể tạo một bằng cách sử dụng kết hợp các chức kèo bóng đá việt nam khác. TRONGPhần
39.12.3Có kèo bóng đá việt namPL/PGSQLTriển khaiuster
mà bạn có thể sử dụng để thực hiện kèo bóng đá việt nam đổi của mình
dễ dàng hơn.
Ví dụ 39-8. kèo bóng đá việt nam một thủ tục với chuỗi Thao tác vàouttham số từkèo bóng đá việt namđếnPL/PGSQL
sau đâyOracleQuy trình kèo bóng đá việt nam được sử dụng để phân tích URL và trả về một số các yếu tố (máy chủ, đường dẫn và truy vấn).
Đây là phiên bản Oracle:
22224_23104
Đây là bản dịch có thể thànhPL/PGSQL:
23243_24139
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ụ 39-9Hiển thị cách kèo bóng đá việt nam một quy trình sử dụng nhiều các tính năng dành riêng cho Oracle.
Ví dụ 39-9. kèo bóng đá việt nam một thủ tục từkèo bóng đá việt namđếnPL/PGSQL
Phiên bản Oracle:
Tạo hoặc thay thế thủ tục CS_CREATE_JOB (V_JOB_ID in Integer) IS A_Rasty_Job_Count Integer; Pragma tự trị_transaction;(1)Bắt đầu Bảng khóa CS_JOBS ở chế độ độc quyền;(2)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í(3)RAISE_APPLICATION_ERROR (-20000, 'Không thể tạo kèo bóng đá việt nam công việc mới: kèo bóng đá việt nam 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, sysdate); 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
Các quy trình như thế này có thể dễ dàng kèo bóng đá việt nam đổi thànhPostgreSQLchức kèo bóng đá việt nam Trở vềvoid. Thủ tục này trong đặc biệt là thú vị bởi vì nó có thể dạy chúng ta kèo bóng đá việt nam số đồ đạc:
Đây là cách chúng ta có thể kèo bóng đá việt nam thủ tục này sangPL/PGSQL:
27533_27908(1)27990_28230(2)- Đừng lo lắng nếu nó đã tồn tại KẾT THÚC; KẾT THÚC; $$ ngôn ngữ plpgsql;
Phần này giải thích một vài điều khác cần xem khi kèo bóng đá việt nam Oraclekèo bóng đá việt namCác chức kèo bóng đá việt nam thànhPostgreSQL.
inPL/PGSQL, khi kèo bóng đá việt nam Ngoại lệ bị bắt bởi kèo bóng đá việt namNgoạ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. Đó là, Hành vi này tương đương với những gì bạn nhận được trong Oracle 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 kèo bóng đá việt nam quy trình Oracle sử dụngSavePointvàrollback toTrong kiểu này, nhiệm vụ của bạn rất dễ dàng: Chỉ cần bỏ quaSavePointvàrollback to. Nếu bạn có kèo bóng đá việt nam thủ tục sử dụngSavePointvàrollback toTheo kèo bóng đá việt nam cách khác thì kèo bóng đá việt nam số suy nghĩ thực tế sẽ được yêu cầu.
ThePL/PGSQLPhiên bảnthực thihoạt động tương tự nhưkèo bóng đá việt namphiên bản, nhưng bạn có
Để nhớ sử dụngquote_literal
vàQUOTE_IDENT
như được mô tả trongPhần
39.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 bóng đá việt nam này.
PostgreSQLcung cấp cho bạn hai Bộ điều chỉnh tạo chức kèo bóng đá việt nam để tối ưu hóa thực thi:"biến động"32524_32627"Sự nghiêm ngặt"(Cho dù Hàm trả về NULL nếu bất kỳ đối số là NULL). Tham khảo ý kiếnTạo chức kèo bóng đá việt namtrang 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ạnTạo chức kèo bóng đá việt namCâu lệnh có thể nhìn kèo bóng đá việt nam cái gì đó 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;
Phần này chứa mã cho kèo bóng đá việt nam tập hợp
Tương thích oracleuster
chức năng
mà bạn có thể sử dụng để đơn giản hóa các nỗ lực kèo bóng đá việt nam đổi của mình.
33510_36530