10282_10321 | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 37.PL/PGSQL - SQLNgôn ngữ thủ tục | kèo bóng đá c1 tiếp nhanh | 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 đá c1Ngôn ngữ, để giúp các nhà phát triển Port Các ứng dụng từ Oracle đếnPostgreSQL.
PL/PGSQL11638_11882kèo bóng đá c1đếnPL/PGSQLlà:
Không có giá trị mặc định cho các tham số trong12081_12093.
Bạn có thể quá tải tên kèo bóng đá c1 năng trongPostgreSQL. Điều này thường được sử dụng để làm việc xung quanh việc thiếu các tham số mặc định.
Không cần con trỏ trongPL/PGSQL, Chỉ cần đặt truy vấn vàochoTuyên bố. (Nhìn thấyVí dụ 37-3.)
inPostgreSQLBạn cần thoát khỏi các trích dẫn đơn trong cơ thể kèo bóng đá c1 năng. Nhìn thấyPhần 37.2.1.
Thay vì các gói, hãy sử dụng các lược đồ để sắp xếp kèo bóng đá c1 năng thành các nhóm.
Ví dụ 37-2Hiển thị cách kèo bóng đá c1 chức năng đơn giản từkèo bóng đá c1đếnPL/PGSQL.
Ví dụ 37-2. kèo bóng đá c1 một chức năng đơn giản từkèo bóng đá c1đếnPL/PGSQL
Đây làOracle kèo bóng đá c1kèo bóng đá c1 năng:
13677_13919
Hãy xem qua kèo bóng đá c1 năng này và xem sự khác biệt vớiPL/PGSQL:
PostgreSQLkhông đã đặt tên cho các tham số. Bạn phải bí danh rõ ràng Bên trong kèo bóng đá c1 năng của bạn.
Oraclecó thể cóin, outvàInouttham số được truyền đến các kèo bóng đá c1 năng.Inoutví dụ, có nghĩa là tham số sẽ nhận được một giá trị và trả về một giá trị khác.PostgreSQLchỉ cóintham số.
ThereturnTừ khóa trong Nguyên mẫu kèo bóng đá c1 năng (không phải cơ thể kèo bóng đá c1 năng) trở thànhreturninPOSTGRESQL.
inPostgreSQL,, các kèo bóng đá c1 năng được tạo bằng cách sử dụng các trích dẫn đơn lẻ là phân định cơ thể kèo bóng đá c1 năng, vì vậy bạn phải trốn thoát trích dẫn đơn bên trong cơ thể kèo bóng đá c1 năng.
The/Hiển thị lỗiLệnh không không tồn tại trongPostgreSQL.
Đây là cách chức năng này trông như thế nào khi được kèo bóng đá c1 sangPostgreSQL:
15618_15908
Ví dụ 37-3Hiển thị cách kèo bóng đá c1 một hàm tạo ra một chức năng khác chức năng và cách xử lý các vấn đề trích dẫn tiếp theo.
Ví dụ 37-3. kèo bóng đá c1 một chức năng tạo ra Một chức năng khác từkèo bóng đá c1đếnPL/PGSQL
Quy trình sau lấy hàng từ AChọnTuyên bố và xây dựng một kèo bóng đá c1 năng lớn với kết quả trongnếuCâu lệnh, vì lợi ích của hiệu quả. Đặc biệt chú ý sự khác biệt trong con trỏ vàchoVòng lặp,
Đây là phiên bản Oracle:
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; A_output varchar (4000); BẮT ĐẦU A_OUTPUT: = 'Tạo hoặc thay thế kèo bóng đá c1 năng CS_FIND_REFERRER_TYPE (V_HOST IN VARCHAR, V_DOMAIN IN VARCHAR, v_url trong varchar) varchar trả về bắt đầu '; Cho người giới thiệu_key trong giới thiệu_keys vòng lặp a_output: = a_output || '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; a_output: = a_output || 'Trả lại null; KẾT THÚC;'; Thực hiện A_Output ngay lập tức; KẾT THÚC; / Hiển thị lỗi;
Đây là cách kèo bóng đá c1 năng này kết thúc trongPostgreSQL:
17656_18918
Ví dụ
37-4Hiển thị cách kèo bóng đá c1 chức năng vớiouttham số và thao tác chuỗi.PostgreSQLkhông cóuster
kèo bóng đá c1 năng, nhưng bạn có thể làm việc
xung quanh nó bằng cách sử dụng kết hợp các kèo bóng đá c1 năng khác.inPhần
37.11.3Có mộtPL/PGSQLTriển khaiuster
mà bạn có thể sử dụng để thực hiện kèo bóng đá c1 đổi của mình
dễ dàng hơn.
Ví dụ 37-4. kèo bóng đá c1 một thủ tục với chuỗi Thao tác vàOuttham số từkèo bóng đá c1đếnPL/PGSQL
sau đâyOracleQuy trình kèo bóng đá c1 đượ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).PL/PGSQLCác kèo bóng đá c1 năng chỉ có thể trả về một giá trị. TRONGPostgreSQL, một Cách để làm việc xung quanh điều này là chia thủ tục trong ba các kèo bóng đá c1 năng khác nhau: một để trả lại máy chủ, một kèo bóng đá c1 năng khác cho đường dẫn và một đường dẫn khác cho truy vấn.
Đây là phiên bản Oracle:
20499_21379
Đây là cáchPL/PGSQLHàm trả về phần máy chủ có thể trông giống như:
Tạo hoặc thay thế kèo bóng đá c1 năng CS_PARSE_URL_HOST (VARCHAR) Trả về Varchar là ' TUYÊN BỐ bí danh V_URL với giá $ 1; v_host varchar; v_path varchar; Số nguyên A_POS1; Số nguyên A_POS2; Số nguyên A_POS3; BẮT ĐẦU v_host: = null; a_pos1: = uster (v_url, '' // ''); Nếu a_pos1 = 0 thì TRỞ LẠI ''''; - Trả lại một khoảng trống Kết thúc nếu; a_pos2: = uster (v_url, ''/'', a_pos1 + 2); Nếu a_pos2 = 0 thì V_host: = Subrtr (V_URL, A_POS1 + 2); v_path: = ''/''; Trả lại v_host; Kết thúc nếu; V_host: = Subrtr (V_URL, A_POS1 + 2, A_POS2 - A_POS1 - 2); Trả lại v_host; KẾT THÚC; 'Ngôn ngữ plpgsql;
Ví dụ 37-5Hiển thị cách kèo bóng đá c1 một quy trình sử dụng nhiều các tính năng dành riêng cho Oracle.
Ví dụ 37-5. kèo bóng đá c1 một thủ tục từkèo bóng đá c1đế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 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 một công việc mới: một 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 sau đó null; - Đừng lo lắng nếu nó đã tồn tại(4)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 đá c1 đổi thànhPostgreSQLkèo bóng đá c1 năng trả lại mộtSố nguyên. Thủ tục này trong đặc biệt là thú vị bởi vì nó có thể dạy chúng ta một số đồ đạc:
Đây là cách chúng tôi có thể kèo bóng đá c1 thủ tục này sangPL/PGSQL:
25579_26456(1)Kết thúc nếu; Trả lại 0; 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 đá c1 Oraclekèo bóng đá c1kèo bóng đá c1 năng choPostgreSQL.
ThePL/PGSQLphiên bản củathực thihoạt động tương tự nhưkèo bóng đá c1phiên bản, nhưng bạn có
Để nhớ sử dụngquote_literal (văn bản)
vàQUOTE_STRING (văn bản)
Như được mô tả trongPhần
37.6.4. Cấu trúc của loạithực thi '' chọn * từ $ 1 '';sẽ không hoạt động
Trừ khi bạn sử dụng các kèo bóng đá c1 năng này.
PostgreSQLcung cấp cho hai bạn Bộ sửa đổi tạo kèo bóng đá c1 năng để tối ưu hóa thực thi: sự biến động (cho dù kèo bóng đá c1 năng luôn luôn trả về kết quả khi được đưa ra cùng một đối số) và"Sự nghiêm ngặt"(Cho dù kèo bóng đá c1 năng có trả về null nếu có bất kỳ đối số là null). Tham khảo ý kiến mô tả củaTạo kèo bóng đá c1 năngĐể biết chi tiết.
Để sử dụng các thuộc tính tối ưu hóa này, của bạnTạo kèo bóng đá c1 năngCâu lệnh có thể nhìn một cái gì đó như thế này:
Tạo hàm foo (...) Trả về số nguyên là ' ... 'Ngôn ngữ plpgsql nghiêm ngặt bất biến;
Phần này chứa mã cho 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 đá c1 đổi của bạn.
29354_32422