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

43.8. Quản lý tỷ lệ kèo bóng đá

Trong tỷ lệ kèo bóng đá thủ tục được gọi bởigọilệnh cũng như trong tỷ lệ kèo bóng đá khối mã ẩn danh (doLệnh), có thể kết thúc các tỷ lệ kèo bóng đá bằng cách sử dụng các lệnhcam kếtrollback. Một tỷ lệ kèo bóng đá mới được bắt đầu tự động sau khi kết thúc tỷ lệ kèo bóng đá bằng cách sử dụng các lệnh này, do đó không có riêng biệtBắt đầu tỷ lệ kèo bóng đálệnh. (Lưu ý rằngBắt đầukết thúcCó ý nghĩa khác nhau trong PL/PGSQL.)

Đây là một ví dụ đơn giản:

Tạo quy trình tỷ lệ kèo bóng đá dịch_Test1 ()
Ngôn ngữ plpgsql
Như $$
BẮT ĐẦU
    Cho tôi trong 0..9 vòng lặp
        Chèn vào các giá trị test1 (a) (i);
        Nếu i % 2 = 0 thì
            LÀM;
        KHÁC
            Rollback;
        Kết thúc nếu;
    Kết thúc vòng lặp;
KẾT THÚC;
$$;

Gọi tỷ lệ kèo bóng đá dịch_test1 ();

Một tỷ lệ kèo bóng đá mới bắt đầu với các đặc điểm tỷ lệ kèo bóng đá mặc định như mức cách ly tỷ lệ kèo bóng đá. Trong trường hợp các tỷ lệ kèo bóng đá được thực hiện trong một vòng lặp, có thể tự động bắt đầu các tỷ lệ kèo bóng đá mới với các đặc điểm giống như các đặc điểm trước. Các lệnhcam kết và chuỗirollback và chuỗithực hiện điều này.

Điều khiển tỷ lệ kèo bóng đá chỉ có thể tronggọihoặcdoNhững lời mời từ cấp cao nhất hoặc lồng nhaugọihoặcdoNhững lời mời mà không có bất kỳ lệnh can thiệp nào khác. Ví dụ: nếu ngăn xếp cuộc gọi làgọi Proc1 ()gọi Proc2 ()Gọi Proc3 (), sau đó các thủ tục thứ hai và thứ ba có thể thực hiện các hành động kiểm soát tỷ lệ kèo bóng đá. Nhưng nếu ngăn xếp cuộc gọi làgọi Proc1 ()Chọn func2 ()Gọi Proc3 (), thì quy trình cuối cùng không thể thực hiện kiểm soát tỷ lệ kèo bóng đá, vìChọnở giữa.

Cân nhắc đặc biệt áp dụng cho tỷ lệ kèo bóng đá vòng lặp con trỏ. Xem xét ví dụ này:

Tạo quy trình tỷ lệ kèo bóng đá dịch_test2 ()
Ngôn ngữ plpgsql
Như $$
TUYÊN BỐ
    r bản ghi;
BẮT ĐẦU
    Đối với r trong Chọn * Từ Đơn hàng Test2 của X Loop
        Chèn vào các giá trị test1 (a) (r.x);
        LÀM;
    Kết thúc vòng lặp;
KẾT THÚC;
$$;

Gọi tỷ lệ kèo bóng đá dịch_Test2 ();

Thông thường, con trỏ được tự động đóng khi cam kết tỷ lệ kèo bóng đá. Tuy nhiên, một con trỏ được tạo ra như một phần của vòng lặp như thế này được tự động chuyển đổi thành con trỏ có thể giữ được bởi đầu tiêncam kếthoặcrollback. Điều đó có nghĩa là con trỏ được đánh giá đầy đủ ở lần đầu tiêncam kếthoặcrollbackthay vì hàng từng hàng. Con trỏ vẫn được gỡ bỏ tự động sau vòng lặp, vì vậy điều này chủ yếu là vô hình đối với người dùng.

Các lệnh tỷ lệ kèo bóng đá không được phép trong các vòng lặp con trỏ được điều khiển bởi các lệnh không chỉ đọc (ví dụCập nhật ... Trả lại).

Một tỷ lệ kèo bóng đá không thể kết thúc bên trong một khối với trình xử lý ngoại lệ.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.