Phiên tỷ lệ kèo bóng đá được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên tỷ lệ kèo bóng đá phát triển:18 / Devel
Phiên tỷ lệ kèo bóng đá 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
Tài liệu này dành cho phiên tỷ lệ kèo bóng đá không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng tỷ lệ kèo bóng đá trang chohiện tạiPhiên bản hoặc một trong tỷ lệ kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

37.6. Các tỷ lệ kèo bóng đá

Trong phần này và các phần sau, chúng tôi mô tả tất cả Các loại câu tỷ lệ kèo bóng đá được hiểu rõ ràng bởiPL/PGSQL. Bất cứ điều gì không được công nhận là một trong những Các loại câu tỷ lệ kèo bóng đá này được coi là một tỷ lệ kèo bóng đá SQL và là được gửi đến công cụ cơ sở dữ liệu chính để thực thi, như được mô tả trongPhần 37.6.2Phần 37.6.3.

37.6.1. Phân công

gán giá trị cho APL/PGSQL11547_11597

định danh: =Biểu thức;

Như đã giải thích ở trên, biểu thức trong tỷ lệ kèo bóng đá tuyên bố như vậy là được đánh giá bằng phương tiện của SQLChọntỷ lệ kèo bóng đá được gửi đến công cụ cơ sở dữ liệu chính. Biểu thức phải mang lại một giá trị duy nhất.

Nếu loại dữ liệu kết quả của biểu thức không khớp với Kiểu dữ liệu của biến hoặc biến có tỷ lệ kèo bóng đá kích thước/độ chính xác (nhưChar (20)), The Giá trị kết quả sẽ được chuyển đổi hoàn toàn bởiPL/PGSQLThông dịch viên sử dụng kết quả Chức năng đầu ra của loại và chức năng đầu vào của loại biến. Lưu ý rằng điều này có khả năng có khả năng dẫn đến lỗi thời gian chạy được tạo bởi hàm đầu vào, nếu dạng chuỗi của Giá trị kết quả không được chấp nhận cho chức năng đầu vào.

Ví dụ:

user_id: = 20;
Thuế: = Subtotal * 0,06;

37.6.2. Thực hiện tỷ lệ kèo bóng đá truy vấn Không có kết quả

Đối với bất kỳ truy vấn SQL nào không trả lại hàng, ví dụChènkhông cóTrở vềmệnh đề, bạn có thể thực thi truy vấn trong aPL/PGSQLHàm Chỉ bằng cách viết truy vấn.

bất kỳPL/PGSQLTên biến xuất hiện trong văn bản truy vấn được thay thế bằng ký hiệu tham số, và sau đó giá trị hiện tại của biến được cung cấp dưới dạng Giá trị tham số tại thời gian chạy. Điều này cho phép cùng một truy vấn văn bản để làm những việc khác nhau trong tỷ lệ kèo bóng đá cuộc gọi khác nhau của hàm.

Lưu ý:Quy trình hai bước này cho phépPL/PGSQLĐể lập kế hoạch truy vấn chỉ một lần và sử dụng lại kế hoạch về tỷ lệ kèo bóng đá thực thi tiếp theo. Như một Ví dụ, nếu bạn viết

Khai báo
    văn tỷ lệ kèo bóng đá chính;
    Số nguyên Delta;
BẮT ĐẦU
    ...
    Cập nhật myTab set val = val + delta trong đó id = key;

Văn tỷ lệ kèo bóng đá truy vấn được nhìn thấy bởi động cơ SQL chính sẽ trông giống

Cập nhật myTab set val = val + $ 1 trong đó id = $ 2;

Mặc dù bạn thường không phải suy nghĩ về điều này, Thật hữu ích khi biết điều đó khi bạn cần có ý nghĩa Tin nhắn lỗi cú pháp.

THẬN TRỌNG

​​PL/PGSQLWill thay thế cho bất kỳ định danh nào phù hợp với một trong những tỷ lệ kèo bóng đá biến được khai báo của chức năng; Nó không đủ sáng Để biết liệu đó có phải là ý của bạn không! Vì vậy, nó là một ý tưởng tồi khi sử dụng một tên biến giống như bất kỳ tên hoặc tên cột mà bạn cần tham khảo trong Truy vấn trong hàm. Đôi khi bạn có thể làm việc xung quanh điều này bằng cách sử dụng tên đủ điều kiện trong truy vấn:PL/PGSQLSẽ không thay thế trong tỷ lệ kèo bóng đá tên đủ điều kiệnfoo.Bar, ngay cả khifoohoặcBarlà biến được khai báo tên.

Đôi khi rất hữu ích khi đánh giá tỷ lệ kèo bóng đá biểu thức hoặcChọnTruy vấn nhưng loại bỏ kết quả, ví dụ khi gọi tỷ lệ kèo bóng đá hàm có tác dụng phụ nhưng Không có giá trị kết quả hữu ích. Để làm điều này trongPL/PGSQL, Sử dụngthực hiệnTuyên bố:

thực hiệnTruy vấn;

Điều này thực thiTruy vấnvà loại bỏ kết quả. ViếtTruy vấngiống như cách bạn sẽ viết SQLChọntỷ lệ kèo bóng đá, nhưng thay thế Từ khóa ban đầuChọnvớithực hiện. PL/PGSQLBiến sẽ được thay thế vào truy vấn như bình thường. Ngoài ra, biến đặc biệttìm thấyđược đặt thành true nếu truy vấn được tạo tại ít nhất tỷ lệ kèo bóng đá hàng, hoặc sai nếu nó không tạo ra hàng.

Lưu ý:Người ta có thể mong đợi rằng viếtChọn16545_16652thực hiện. Một tỷ lệ kèo bóng đá sql có thể trả lại hàng, chẳng hạn nhưChọn, Will bị từ chối như tỷ lệ kèo bóng đá lỗi trừ khi nó cóthànhĐiều khoản như được thảo luận trong lần tiếp theo phần.

tỷ lệ kèo bóng đá ví dụ:

thực hiện created_mv ('cs_session_page_requests_mv', my_query);

37.6.3. Thực hiện tỷ lệ kèo bóng đá truy vấn với tỷ lệ kèo bóng đá kết quả tỷ lệ kèo bóng đá hàng

Kết quả của tỷ lệ kèo bóng đá SQL mang lại một hàng duy nhất (có thể của nhiều cột) có thể được gán cho một biến bản ghi, Biến kiểu hàng hoặc danh sách các biến vô hướng. Điều này được thực hiện bởi Viết tỷ lệ kèo bóng đá SQL cơ sở và thêmthànhmệnh đề. Ví dụ,

Chọnselect_expressionsthành [nghiêm ngặt]Targettừ ...;
Chèn ... trở vềBiểu thứcthành [nghiêm ngặt]Target;
Cập nhật ... Trả vềBiểu thứcthành [nghiêm ngặt]Target;
Xóa ... Trả vềBiểu thức18201_18210nghiêm ngặt]Target;

ở đâuTargetcó thể là một bản ghi Biến, biến hàng hoặc danh sách đơn giản được phân tách bằng dấu phẩy tỷ lệ kèo bóng đá biến và trường ghi/hàng.PL/PGSQLBiến sẽ được thay thế vào phần còn lại của truy vấn như bình thường. Điều này hoạt động choChọn, Chèn/Cập nhật/XóavớiTrở về, và các tỷ lệ kèo bóng đá tiện ích mà Trả về kết quả tập hợp hàng (chẳng hạn nhưGiải thích). Ngoại trừthànhmệnh đề, tỷ lệ kèo bóng đá SQL giống như nó sẽ được viết bên ngoàiPL/PGSQL.

Tip:Lưu ý rằng cách giải thích này củaChọnvớithànhIS Khá khác vớiPostgreSQL'thường xuyênChọn vàotỷ lệ kèo bóng đá, trong đó19440_19446Target là tỷ lệ kèo bóng đá bảng mới được tạo. Nếu bạn muốn tạo tỷ lệ kèo bóng đá bảng từ tỷ lệ kèo bóng đáChọnKết quả bên trong APL/PGSQLHàm, sử dụng cú phápTạo bảng ... như chọn.

Nếu một hàng hoặc danh sách biến được sử dụng làm mục tiêu, truy vấn của tỷ lệ kèo bóng đá cột kết quả phải khớp chính xác với cấu trúc của mục tiêu như về số lượng và tỷ lệ kèo bóng đá loại dữ liệu, hoặc một lỗi thời gian chạy xảy ra. Khi a Biến ghi là mục tiêu, nó tự động cấu hình chính nó với loại hàng của tỷ lệ kèo bóng đá cột kết quả truy vấn.

Thethànhmệnh đề có thể xuất hiện gần như Bất cứ nơi nào trong tỷ lệ kèo bóng đá SQL. Theo thông thường nó được viết ngay trước hoặc ngay sau danh sáchselect_expressionstrong AChọntỷ lệ kèo bóng đá hoặc ở cuối tỷ lệ kèo bóng đá cho Các loại tỷ lệ kèo bóng đá khác. Bạn nên làm theo điều này quy ước trong trường hợpPL/PGSQLtrình phân tích cú pháp trở nên chặt chẽ hơn trong tương lai phiên tỷ lệ kèo bóng đá.

nếunghiêm ngặtkhông được chỉ định, sau đóTargetsẽ được đặt thành lần đầu tiên Hàng được trả lại bởi truy vấn hoặc vô hiệu nếu truy vấn trả về không hàng. (Lưu ý rằng20829_20846IS không được xác định rõ trừ khi bạn đã sử dụngĐặt hàng QUA.) Bất kỳ hàng kết quả nào sau khi hàng đầu tiên bị loại bỏ. Bạn có thể kiểm tra đặc biệttìm thấyBiến (xemPhần 37.6.6) Để xác định xem tỷ lệ kèo bóng đá hàng đã được trả về:

Chọn * vào MyRec từ empname = myname;
Nếu không tìm thấy thì
    Tăng ngoại lệ 'nhân viên % không tìm thấy', myname;
Kết thúc nếu;

Nếunghiêm ngặtTùy chọn được chỉ định, Truy vấn phải trả về chính xác tỷ lệ kèo bóng đá hàng hoặc lỗi thời gian chạy sẽ được báo cáo,NO_DATA_FOUND(không hàng) hoặcTOUS_MANY_ROWS(nhiều hơn tỷ lệ kèo bóng đá hàng ngang). Bạn có thể sử dụng tỷ lệ kèo bóng đá khối ngoại lệ nếu bạn muốn bắt Lỗi, ví dụ:

21770_22047

Thực hiện thành công tỷ lệ kèo bóng đá vớinghiêm ngặtluôn luôn đặttìm thấyđến đúng.

choChèn/Cập nhật/XóavớiTrở về, PL/PGSQLBáo cáo lỗi cho nhiều hơn tỷ lệ kèo bóng đá hàng đã trả lại, ngay cả khi​​nghiêm ngặtIS không được chỉ định. Điều này là do không có tùy chọn nhưĐặt hàng bởiđể xác định cái nào Hàng bị ảnh hưởng sẽ được trả lại.

Lưu ý:Thenghiêm ngặtTùy chọn khớp với hành vi của Oracle PL/SQL'sChọn vàovà các câu tỷ lệ kèo bóng đá liên quan.

22954_23045Phần 37.7.4.

37.6.4. Không làm gì cả

Đôi khi một câu tỷ lệ kèo bóng đá trình giữ chỗ không có gì hữu ích. Ví dụ, nó có thể chỉ ra rằng một cánh tay của một Nếu/sau đó/chuỗi khác được cố tình trống. Đối với mục đích này, sử dụng ThenullTuyên bố:

null;

Ví dụ: hai đoạn mã sau đây là tương đương:

Bắt đầu
        y: = x / 0;
    NGOẠI LỆ
        Khi Division_by_zero sau đó
            VÔ GIÁ TRỊ;  - Bỏ qua lỗi
    KẾT THÚC;
Bắt đầu
        y: = x / 0;
    NGOẠI LỆ
        Khi phân chia_by_zero sau đó - bỏ qua lỗi
    KẾT THÚC;

Thể hơn là tỷ lệ kèo bóng đá vấn đề của hương vị.

Lưu ý:Trong PL/SQL của Oracle, Danh sách câu tỷ lệ kèo bóng đá trống không được phép, và vì vậynullCâu tỷ lệ kèo bóng đáYêu cầuĐối với tỷ lệ kèo bóng đá tình huống như vậy Như thế này.PL/PGSQLcho phép bạn chỉ viết không có gì, thay vào đó.

37.6.5. Thực hiện động tỷ lệ kèo bóng đá

24666_24738PL/PGSQLHàm, đó là, các tỷ lệ kèo bóng đá sẽ liên quan đến các bảng khác nhau hoặc khác nhau Các loại dữ liệu mỗi khi chúng được thực thi.PL/PGSQLNhững nỗ lực bình thường đối với các kế hoạch bộ đệm Đối với các tỷ lệ kèo bóng đá sẽ không hoạt động trong các kịch bản như vậy. Để xử lý điều này loại vấn đề,thực thiTuyên bố được cung cấp:

thực thi25200_25216[thành [nghiêm ngặt]Target ];

WHEREchuỗi tỷ lệ kèo bóng đálà tỷ lệ kèo bóng đá Biểu thức mang lại tỷ lệ kèo bóng đá chuỗi (loạiText) chứa tỷ lệ kèo bóng đá sẽ được thực thi vàTargetlà biến bản ghi, Biến hàng hoặc danh sách tỷ lệ kèo bóng đá biến đơn giản được phân tách bằng dấu phẩy và tỷ lệ kèo bóng đá trường ghi/hàng.

Lưu ý cụ thể rằng không thay thếPL/PGSQLBiến được thực hiện trên tính toán được tính toán Chuỗi tỷ lệ kèo bóng đá. Các giá trị của các biến phải được chèn vào Chuỗi tỷ lệ kèo bóng đá khi nó được xây dựng.

Không giống như tất cả các tỷ lệ kèo bóng đá khác trongPL/PGSQL, một tỷ lệ kèo bóng đá chạy bởi mộtthực thiTuyên bố không được chuẩn bị và lưu chỉ một lần trong suốt cuộc đời của phiên. Thay vào đó, tỷ lệ kèo bóng đá là Chuẩn bị mỗi lần tuyên bố được chạy. Chuỗi tỷ lệ kèo bóng đá có thể được tạo động trong chức năng để thực hiện các hành động trên các bảng và cột khác nhau.

Thethànhmệnh đề chỉ định nơi Kết quả của tỷ lệ kèo bóng đá trả về tỷ lệ kèo bóng đá SQL phải được gán. Nếu như một danh sách hàng hoặc danh sách biến được cung cấp, nó phải khớp chính xác với cấu trúc của kết quả của truy vấn (khi biến bản ghi là được sử dụng, nó sẽ tự cấu hình để phù hợp với cấu trúc kết quả tự động). Nếu nhiều hàng được trả lại, chỉ có hàng đầu tiên sẽ được gán chothànhBiến. Nếu không có hàng nào được trả về, null được gán chothànhBiến. Nếu khôngthànhmệnh đề được chỉ định, kết quả truy vấn là bị loại bỏ.

Nếunghiêm ngặtTùy chọn được đưa ra, tỷ lệ kèo bóng đá lỗi được báo cáo trừ khi truy vấn tạo chính xác tỷ lệ kèo bóng đá hàng ngang.

Chọn vàohiện tại không được hỗ trợ trongthực thi.

Khi làm việc với các tỷ lệ kèo bóng đá động, bạn thường phải Xử lý thoát khỏi các trích dẫn đơn. Phương pháp được đề xuất cho Trích dẫn văn bản cố định trong cơ thể chức năng của bạn là trích dẫn đô la. (Nếu như Bạn có mã di sản không sử dụng báo giá đô la, xin vui lòng Tham khảo tổng quan trongPhần 37.2.1, có thể tiết kiệm cho bạn tỷ lệ kèo bóng đá số nỗ lực khi dịch Mã đã nói cho tỷ lệ kèo bóng đá sơ đồ hợp lý hơn.)

tỷ lệ kèo bóng đá giá trị động sẽ được chèn vào truy vấn yêu cầu xử lý đặc biệt vì chúng có thể chứa tỷ lệ kèo bóng đá ký tự trích dẫn. Một ví dụ (điều này giả định rằng bạn đang sử dụng báo giá đô la cho toàn bộ chức năng, vì vậy trích dẫn Dấu không cần phải nhân đôi):

Thực thi 'Cập nhật bộ TBL'
        || quote_ident (colname)
        || '='
        || quote_literal (newValue)
        || 'WHERE KEY ='
        || quote_literal (keyValue);

Ví dụ này thể hiện việc sử dụng28433_28446quote_literalchức năng. Cho an toàn, tỷ lệ kèo bóng đá biểu thức chứa tỷ lệ kèo bóng đá định danh cột và bảng nên được được truyền choquote_ident. Biểu thức chứa các giá trị nên là chuỗi theo nghĩa đen trong tỷ lệ kèo bóng đá được xây dựng sẽ được chuyển sangquote_literal28815_28992

Lưu ý rằng trích dẫn đô la chỉ hữu ích để trích dẫn cố định chữ. Sẽ là tỷ lệ kèo bóng đá ý tưởng rất tồi khi cố gắng thực hiện những điều trên Ví dụ như

Thực thi 'Cập nhật bộ TBL'
        || quote_ident (colname)
        || '= $$'
        || NewValue
        || '$$ trong đó key ='
        || quote_literal (keyValue);

Bởi vì nó sẽ bị hỏng nếu nội dung củaNewValuetình cờ chứa$$. Sự phản đối tương tự sẽ áp dụng cho bất kỳ Dollar-Roting Delimiter bạn có thể chọn. Vì vậy, để trích dẫn một cách an toàn văn tỷ lệ kèo bóng đá không được biết trước, bạnphảisử dụngquote_literal.

Một ví dụ lớn hơn nhiều về tỷ lệ kèo bóng đá động vàthực thiCó thể nhìn thấy trongVí dụ 37-6,, mà xây dựng và thực hiện tỷ lệ kèo bóng đáTạo CHỨC NĂNGtỷ lệ kèo bóng đá xác định chức năng mới.

37.6.6. Có được kết quả Trạng thái

Có một số cách để xác định hiệu ứng của một tỷ lệ kèo bóng đá. Phương pháp đầu tiên là sử dụngNhận Chẩn đoántỷ lệ kèo bóng đá, có biểu mẫu:

Nhận chẩn đoán​​Biến=Mục[, ...];

tỷ lệ kèo bóng đá này cho phép truy xuất các chỉ báo trạng thái hệ thống. MỗiMụclà một từ khóa Xác định giá trị trạng thái được gán cho được chỉ định Biến (phải là loại dữ liệu phù hợp để nhận Nó). tỷ lệ kèo bóng đá mục trạng thái hiện có làROW_COUNT, số lượng hàng được xử lý bởi cuối cùngSQLtỷ lệ kèo bóng đá được gửi xuống đếnSQLĐộng cơ vàresult_oid, oid của hàng cuối cùng được chèn bởi gần đây nhấtSQLtỷ lệ kèo bóng đá. Lưu ý rằngresult_oidchỉ hữu ích sauChèntỷ lệ kèo bóng đá vào bảng chứa OIDS.

tỷ lệ kèo bóng đá ví dụ:

Nhận chẩn đoán integer_var = row_count;

Phương pháp thứ hai để xác định các hiệu ứng của tỷ lệ kèo bóng đá là Để kiểm tra biến đặc biệt có tênTìm thấy, thuộc loạiBoolean. tìm thấyBắt đầu Sai trong mỗiPL/PGSQLCuộc gọi chức năng. Nó được đặt bởi từng loại sau của Các câu tỷ lệ kèo bóng đá:

  • AChọn vàobộ câu tỷ lệ kèo bóng đátìm thấyĐúng nếu tỷ lệ kèo bóng đá hàng được gán, Sai nếu không có hàng được trả về.

  • Athực hiệnbộ câu tỷ lệ kèo bóng đátìm thấyĐúng nếu nó sản xuất (và loại bỏ) tỷ lệ kèo bóng đá hàng, sai nếu không có hàng được sản xuất.

  • Cập nhật, Chèn32396_32404XóaCâu tỷ lệ kèo bóng đátìm thấyĐúng nếu tại ít nhất tỷ lệ kèo bóng đá hàng bị ảnh hưởng, sai nếu không có hàng bị ảnh hưởng.

  • AFetchbộ câu tỷ lệ kèo bóng đátìm thấyĐúng nếu nó trả lại tỷ lệ kèo bóng đá hàng, Sai nếu không có hàng được trả về.

  • Achobộ câu tỷ lệ kèo bóng đátìm thấyĐúng nếu nó lặp lại tỷ lệ kèo bóng đá hoặc nhiều lần, khác sai. Điều này áp dụng cho cả ba biến thể củachocâu tỷ lệ kèo bóng đá (số nguyênchoLOOPS, SET-SETchovòng lặp và tỷ lệ kèo bóng đá ghi độngchovòng lặp).tìm thấyđược đặt theo cách này khichoVòng lặp thoát; bên trong việc thực hiện vòng lặp,tìm thấykhông được sửa đổi bởicho33451_33558

tìm thấylà tỷ lệ kèo bóng đá biến cục bộ bên trong mỗiPL/PGSQLHàm; bất kì tỷ lệ kèo bóng đá thay đổi đối với nó chỉ ảnh hưởng đến chức năng hiện tại.