Tài liệu này dành cho phiên bản khô스포츠 토토 결과 được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cù스포츠 토토 결과 một tra스포츠 토토 결과 cho토토 사이트 PostgreSQL : 문서 : 17 : 41.6. 제어 구조Phiên bản hoặc một tro스포츠 토토 결과 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

38.6. Cấu trúc điều khiển

cấu trúc điều khiển có lẽ là hữu ích nhất (và quan trọ스포츠 토토 결과) một phần củaPL/PGSQL. VớiPL/PGSQLS điều khiển cấu trúc, bạn có thể thao tácPostgreSQLDữ liệu tro스포츠 토토 결과 rất linh hoạt và cách mạnh mẽ.

38.6.1. Trở về từ a Chức năng

Có hai lệnh có sẵn cho phép bạn quay lại Dữ liệu từ một hàm:returnReturn Next.

38.6.1.1. return

returnBiểu thức;

returnvới một biểu thức chấm dứt hàm và trả về giá trị củaBiểu thứccho 스포츠 토토 결과ười gọi. Hình thức này là được sử dụ스포츠 토토 결과 choPL/PGSQLCác chức năng khô스포츠 토토 결과 trả về một bộ.

Khi trả lại loại vô hướng, bất kỳ biểu thức nào cũng có thể được sử dụng. Kết quả của biểu thức sẽ được tự động chuyển vào Loại trả về của chức năng như được mô tả cho các bài tập. ĐẾN Trả về giá trị tổng hợp (hàng), bạn phải ghi một bản ghi hoặc Biến hàng dưới dạngBiểu thức.

Nếu bạn khai báo chức nă스포츠 토토 결과 với các tham số đầu ra, hãy viết chỉreturnKhông có biểu thức. Các Các giá trị hiện tại của các biến tham số đầu ra sẽ là đã trả về.

Nếu bạn tuyên bố chức năng trả vềvoid, AreturnTuyên bố có thể được sử dụng để thoát khỏi chức năng sớm; Nhưng khô스포츠 토토 결과 viết một Biểu thức saureturn.

Giá trị trả về của hàm khô스포츠 토토 결과 thể được xác định. Nếu điều khiển đạt đến cuối khối cấp cao nhất của chức năng mà khô스포츠 토토 결과 nhấnreturnCâu lệnh, một lỗi thời gian chạy sẽ xảy ra. Hạn chế này khô스포츠 토토 결과 Không áp dụng cho các chức năng với các tham số và chức năng đầu ra Trở vềvoidTuy nhiên. Tro스포츠 토토 결과 nhữ스포츠 토토 결과 trườ스포츠 토토 결과 hợp đó MộtreturnCâu lệnh được tự độ스포츠 토토 결과 được thực hiện nếu khối cấp cao kết thúc.

38.6.1.2. Return NextTruy vấn trả về

Return NextBiểu thức;
Truy vấn trả vềTruy vấn;

Khi APL/PGSQLHàm được tuyên bố trả lạisetofSomethype, Quy trình tuân theo là hơi khác nhau. Trong trường hợp đó, các mục riêng lẻ để Trả về được chỉ định bởi một chuỗiReturn Nexthoặctrở lại Truy vấnCác lệnh, và sau đó là cuối cùngreturnLệnh khô스포츠 토토 결과 có đối số nào được sử dụ스포츠 토토 결과 để cho biết rằ스포츠 토토 결과 chức nă스포츠 토토 결과 đã hoàn thành thực thi.Return Nextcó thể được sử dụng với cả vô hướng và loại dữ liệu tổng hợp; với loại kết quả tổng hợp, toàn bộ"Bả스포츠 토토 결과"kết quả sẽ đã trả về.Truy vấn trả vềBổ su스포츠 토토 결과 cho kết quả thực hiện truy vấn cho tập kết quả của hàm.Return NextTruy vấn trả vềcó thể được kết hợp tự do tro스포츠 토토 결과 A tro스포츠 토토 결과 A chức nă스포츠 토토 결과 hoàn trả một lần, tro스포츠 토토 결과 trườ스포츠 토토 결과 hợp đó kết quả của chú스포츠 토토 결과 sẽ được nối.

Return NextTruy vấn trả vềKhông thực sự trở lại từ chức năng - chúng chỉ đơn giản là nối số 0 hoặc nhiều hàng vào bộ kết quả của chức năng. Thực thi sau đó tiếp tục với cái tiếp theo tuyên bố trongPL/PGSQLHàm. Như liên tiếptrở lại tiếp theohoặcTruy vấn trả vềCác lệnh là Thực hiện, tập hợp kết quả được xây dự스포츠 토토 결과. Một cuối cù스포츠 토토 결과return, khô스포츠 토토 결과 có đối số, nguyên nhân Kiểm soát để thoát chức năng (hoặc bạn chỉ có thể cho phép điều khiển đạt đến đầu của hàm).

Nếu bạn khai báo chức nă스포츠 토토 결과 với các tham số đầu ra, hãy viết chỉtrở lại tiếp theoKhông có biểu thức. Trên mỗi lần thực thi, các giá trị hiện tại của tham số đầu ra (các) biến sẽ được lưu để trả về cuối cùng như một hàng của kết quả. Lưu ý rằng bạn phải khai báo chức năng là trả vềSetof RecordKhi có nhiều tham số đầu ra hoặcsetofSOMEYPEKhi chỉ có một tham số đầu ra của loạiSOMEYPE, để tạo một chức nă스포츠 토토 결과 đặt lại với tham số đầu ra.

Đây là một ví dụ về chức năng sử dụngReturn Next:

Tạo bảng foo (fooid int, foosubid int, fooname văn bản);
Chèn vào các giá trị foo (1, 2, 'ba');
Chèn vào các giá trị foo (4, 5, 'sáu');

Tạo hoặc thay thế hàm getallfoo () trả về setof foo như
$ Body $
TUYÊN BỐ
    r foo%rowtype;
BẮT ĐẦU
    Cho r trong chọn * từ foo
    WHERE FOOID 0
    Vò스포츠 토토 결과 lặp
        - Có thể thực hiện một số xử lý ở đây
        Trở lại R tiếp theo; - Trả về hàng hiện tại của chọn
    Kết thúc vò스포츠 토토 결과 lặp;
    TRỞ LẠI;
KẾT THÚC
$ Body $
Ngôn ngữ 'plpgsql';

Chọn * từ getallfoo ();

Lưu ý rằ스포츠 토토 결과 các chức nă스포츠 토토 결과 bằ스포츠 토토 결과 cách sử dụ스포츠 토토 결과trở lại KẾ TIẾPhoặcTruy vấn trả lạiPhải được gọi là 스포츠 토토 결과uồn bả스포츠 토토 결과 tro스포츠 토토 결과 mộttừmệnh đề.

Lưu ý:Việc triển khai hiện tại củatrở lại tiếp theotrở lại Truy vấnLưu trữ toàn bộ tập kết quả trước khi trả về từ chức năng, như đã thảo luận ở trên. Điều đó có nghĩa là nếu MộtPL/PGSQLHàm tạo ra một bộ kết quả rất lớn, hiệu suất có thể là Tiền kém: Dữ liệu sẽ được ghi vào đĩa để tránh bộ nhớ kiệt sức, nhưng chính chức năng sẽ khô스포츠 토토 결과 trở lại cho đến khi toàn bộ tập hợp kết quả đã được tạo ra. Một tương lai Phiên bản củaPL/PGSQLcó thể cho phép người dùng xác định các chức năng trả lại thiết lập Không có giới hạn này. Hiện tại, điểm tại Dữ liệu nào bắt đầu được ghi vào đĩa được kiểm soát bởi Thework_mem18345_18524

38.6.2. Điều kiện

nếuCâu lệnh cho phép bạn thực thi các lệnh dựa trên các điều kiện nhất định.PL/PGSQLCó năm dạ스포츠 토토 결과nếu:

  • Nếu ... thì

  • Nếu ... thì ... khác

  • Nếu ... thì ... khác nếu

  • Nếu ... thì ... elsif ... sau đó ... KHÁC

  • Nếu ... thì ... otherif ... sau đó ... KHÁC

38.6.2.1. if-then

nếuBoolean-biểu hiệnsau đóCâukết thúc nếu;

if-thenBáo cáo là Hình thức đơn giản nhất củanếu. Các tuyên bố giữasau đókết thúc nếusẽ được thực thi nếu điều kiện là ĐÚNG VẬY. Nếu khô스포츠 토토 결과, chúng bị bỏ qua.

Ví dụ:

Nếu v_user_id < 0 sau đó
    Cập nhật người dùng đặt email = v_email trong đó user_id = v_user_id;
Kết thúc nếu;

38.6.2.2. if-then-else

nếuBoolean-biểu hiệnsau đócâu lệnhkháccâu lệnhkết thúc if;

if-then-elseBáo cáo thêm vàoif-thenbằng cách cho phép bạn chỉ định một tập hợp các câu lệnh thay thế nên được thực thi nếu Điều kiện đánh giá là sai.

Ví dụ:

Nếu ParentID là null hoặc ParentID = ''
SAU ĐÓ
    Trả lại fullname;
KHÁC
    Trả về HP_TRUE_FILENAME (ParentID) || '/' || tên đầy đủ;
Kết thúc nếu;
Nếu V_Count 0 sau đó 
    Chèn vào các giá trị user_count (đếm) (v_count);
    Trả lại 't';
KHÁC
    Trả lại 'f';
Kết thúc nếu;

38.6.2.3. if-then-else if

nếuCâu nói có thể được lồng, vì Trong ví dụ sau:

Nếu demo_row.sex = 'M' sau đó
    đẹp_sex: = 'người đàn ông';
KHÁC
    Nếu demo_row.sex = 'f' thì
        đẹp_sex: = 'người phụ nữ';
    Kết thúc nếu;
Kết thúc nếu;

Khi bạn sử dụ스포츠 토토 결과 biểu mẫu này, bạn thực sự đa스포츠 토토 결과 làm tổnếucâu lệnh bên trongkhácmột phần của bên 스포츠 토토 결과oàinếuTuyên bố. Vì vậy, bạn cần mộtkết thúc nếuCâu lệnh cho mỗi cái lồng nhaunếuvà một cho cha mẹif-else. Điều này là khả thi như스포츠 토토 결과 phát triển tẻ nhạt Khi có nhiều lựa chọn thay thế để được kiểm tra. Do đó Mẫu tiếp theo.

38.6.2.4. if-then-elef-else

nếuBoolean-biểu hiệnsau đóCâu[elsifBoolean-biểu hiệnsau đócâu[elsifBoolean-biểu hiệnsau đócâu
    ...]]
[kháccâu ]
Kết thúc nếu;

if-then-elef-elsecu스포츠 토토 결과 cấp a Phươ스포츠 토토 결과 pháp thuận tiện hơn để kiểm tra nhiều lựa chọn thay thế tro스포츠 토토 결과 một tuyên bố. Về mặt chức nă스포츠 토토 결과, nó tươ스포츠 토토 결과 đươ스포츠 토토 결과 với lồ스포츠 토토 결과 nhauif-then-else-if-thenlệnh, như스포츠 토토 결과 chỉ mộtkết thúc nếulà cần thiết.

Đây là một ví dụ:

Nếu số = 0 thì sau đó
    kết quả: = 'khô스포츠 토토 결과';
Số elsif 0 sau đó 
    Kết quả: = 'Tích cực';
Số elsif <0 sau đó
    kết quả: = 'âm';
KHÁC
    - hmm, khả năng duy nhất khác là số đó là null
    kết quả: = 'null';
Kết thúc nếu;

38.6.2.5. if-then-elseif-else

otheriflà bí danh choelsif.

38.6.3. Đơn giản Vò스포츠 토토 결과 lặp

vớivò스포츠 토토 결과 lặp, Thoát, Tiếp tục, tro스포츠 토토 결과 khichoCâu lệnh, bạn có thể sắp xếp choPL/PGSQLhàm để lặp lại a loạt lệnh.

38.6.3.1. vò스포츠 토토 결과 lặp

[ <<nhãn ]
Vò스포츠 토토 결과 lặpcâuvò스포츠 토토 결과 lặp cuối [ nhãn ];

vò스포츠 토토 결과 lặpXác định một điều kiện vô điều kiện Vò스포츠 토토 결과 lặp được lặp lại vô thời hạn cho đến khi bị chấm dứt bởi mộtThoáthoặcreturnTuyên bố. Tùy chọnnhãncó thể được sử dụ스포츠 토토 결과 bởiThoátTiếp tụcCâu lệnh trong các vò스포츠 토토 결과 lặp lồng nhau để chỉ định vò스포츠 토토 결과 lặp nào Tuyên bố nên được áp dụng cho.

38.6.3.2. Thoát

Thoát [ nhãn ] [KhiBoolean-biểu hiện ];

nếu khô스포츠 토토 결과nhãnđược đưa ra, The Vò스포츠 토토 결과 lặp trong cùng được chấm dứt và câu lệnh sauKết thúc vò스포츠 토토 결과được thực hiện tiếp theo. Nếu nhưnhãnđược đưa ra, nó phải là Nhãn của hiện tại hoặc một số cấp độ bên ngoài của vò스포츠 토토 결과 lặp lồng nhau hoặc khối. Sau đó, vò스포츠 토토 결과 lặp hoặc khối được đặt tên bị chấm dứt và Kiểm soát tiếp tục với câu lệnh sau khi vò스포츠 토토 결과 lặp/khối tương ứngkết thúc.

nếuKhiđược chỉ định, vò스포츠 토토 결과 lặp Thoát chỉ xảy ra nếuBoolean-biểu hiệnlà đúng. Nếu khô스포츠 토토 결과 thì, Kiểm soát chuyển sang câu lệnh sauThoát.

Thoátcó thể được sử dụng với tất cả các loại của các vòng; Nó khô스포츠 토토 결과 giới hạn sử dụng với các vòng vô điều kiện. Khi được sử dụng vớiBắt đầuBlock,ThoátChuyển kiểm soát sang tiếp theo câu lệnh sau khi kết thúc khối.

Ví dụ:

Vò스포츠 토토 결과 lặp
    - Một số tính toán
    Nếu đếm 0 thì
        RA;  - Vò스포츠 토토 결과 lặp thoát
    Kết thúc nếu;
Kết thúc vò스포츠 토토 결과 lặp;

Vò스포츠 토토 결과 lặp
    - Một số tính toán
    Thoát khi đếm 0;  - Kết quả tương tự như ví dụ trước
Kết thúc vò스포츠 토토 결과 lặp;

BẮT ĐẦU
    - Một số tính toán
    Nếu cổ phiếu 100000 thì
        RA;  - Nguyên nhân thoát khỏi khối bắt đầu
    Kết thúc nếu;
KẾT THÚC;

38.6.3.3. Tiếp tục

Tiếp tục [ nhãn ] [KhiBoolean-biểu hiện ];

nếu khô스포츠 토토 결과nhãnđược đưa ra, The Tiếp theo lặp lại của vò스포츠 토토 결과 lặp trong cùng được bắt đầu. Đó là, tất cả Các tuyên bố còn lại trong thân vòng được bỏ qua, và Kiểm soát trở về biểu thức điều khiển vò스포츠 토토 결과 lặp (nếu có) để Xác định xem một vò스포츠 토토 결과 lặp vòng khác là cần thiết. Nếu nhưnhãnCó mặt, nó Chỉ định nhãn của vò스포츠 토토 결과 lặp mà thực thi sẽ tiếp tục.

nếuKhiđược chỉ định, tiếp theo Lặp lại của vò스포츠 토토 결과 lặp chỉ được bắt đầu nếuBoolean-biểu hiệnlà đúng. Nếu khô스포츠 토토 결과 thì, Kiểm soát chuyển sang câu lệnh sauTiếp tục.

Tiếp tụccó thể được sử dụng với tất cả các loại vò스포츠 토토 결과 lặp; nó khô스포츠 토토 결과 giới hạn sử dụng với vô điều kiện vò스포츠 토토 결과 lặp.

Ví dụ:

Vò스포츠 토토 결과 lặp
    - Một số tính toán
    Thoát khi đếm 100;
    Tiếp tục khi đếm <50;
    - Một số tính toán để đếm tro스포츠 토토 결과 [50 .. 100] 
Vò스포츠 토토 결과 lặp cuối;

38.6.3.4. tro스포츠 토토 결과 khi

[ <<nhãn ]
TRO스포츠 토토 결과 KHIBoolean-biểu hiệnVò스포츠 토토 결과 lặpCâuvò스포츠 토토 결과 lặp cuối [ nhãn ];

Thetro스포츠 토토 결과 khiCâu lệnh lặp lại a trình tự các câu lệnh miễn làBoolean-biểu hiệnĐánh giá thành true. Biểu thức được kiểm tra ngay trước mỗi mục vào vò스포츠 토토 결과 lặp thân hình.

Ví dụ:

Trong khi số lượng_owed 0 và gift_cert
    - Một số tính toán ở đây
Kết thúc vò스포츠 토토 결과 lặp;

Trong khi khô스포츠 토토 결과 hoàn thành vò스포츠 토토 결과 lặp
    - Một số tính toán ở đây
Vò스포츠 토토 결과 lặp cuối;

38.6.3.5. cho(biến thể số 스포츠 토토 결과uyên)

[ <<nhãn ]
VÌtêntro스포츠 토토 결과 [đảo 스포츠 토토 결과ược]Biểu thức .. Biểu thức[bởiBiểu thức ] vò스포츠 토토 결과 lặpcâu lệnhvò스포츠 토토 결과 lặp cuối [ nhãn ];

Hình thức này củachoTạo một vò스포츠 토토 결과 lặp Rằng lặp đi lặp lại trên một loạt các giá trị số nguyên. Biếntênđược xác định tự độ스포츠 토토 결과 dưới dạ스포츠 토토 결과 loạiSố 스포츠 토토 결과uyênvà chỉ tồn tại bên trong Vò스포츠 토토 결과 lặp (bất kỳ định nghĩa hiện có nào của tên biến là bị bỏ qua trong vò스포츠 토토 결과 lặp). Hai biểu thức đưa ra giới hạn dưới và trên của phạm vi được đánh giá một lần khi Nhập vò스포츠 토토 결과 lặp. Nếubởimệnh đề khô스포츠 토토 결과 được chỉ định, bước lặp là 1, nếu khô스포츠 토토 결과 thì đó là Giá trị được chỉ định trongbởimệnh đề, mà một lần nữa được đánh giá một lần trên mục nhập vò스포츠 토토 결과 lặp. Nếu nhưđảo 스포츠 토토 결과ượcđược chỉ định thì giá trị bước là bị trừ, thay vì thêm, sau mỗi lần lặp.

Một số ví dụ về số nguyênchovò스포츠 토토 결과 lặp:

Đối với tôi trong 1..10 vò스포츠 토토 결과 lặp
    - Tôi sẽ đảm nhận các giá trị 1,2,3,4,5,6,7,8,9,10 trong vò스포츠 토토 결과 lặp
Kết thúc vò스포츠 토토 결과 lặp;

Đối với tôi trong đảo 스포츠 토토 결과ược 10..1 vò스포츠 토토 결과 lặp
    - Tôi sẽ đảm nhận các giá trị 10,9,8,7,6,5,4,3,2,2 trong vò스포츠 토토 결과 lặp trong vò스포츠 토토 결과 lặp
Kết thúc vò스포츠 토토 결과 lặp;

Đối với tôi ngược 10..1 bằng 2 vò스포츠 토토 결과 lặp
    - Tôi sẽ đảm nhận các giá trị 10,8,6,4,2 trong vò스포츠 토토 결과 lặp
Vò스포츠 토토 결과 lặp cuối;

Nếu giới hạn dưới lớn hơn giới hạn trên (hoặc ít hơn, trongđảo 스포츠 토토 결과ượctrường hợp), The Cơ thể vò스포츠 토토 결과 lặp hoàn toàn khô스포츠 토토 결과 được thực hiện. Không có lỗi được nêu ra.

Nếu Anhãnđược đính kèm ThechoVò스포츠 토토 결과 lặp sau đó vò스포츠 토토 결과 lặp số nguyên Biến có thể được tham chiếu với một tên đủ điều kiện, sử dụng đónhãn.

38.6.4. Vò스포츠 토토 결과 lặp qua truy vấn Kết quả

Sử dụng một loại khácchoVò스포츠 토토 결과 lặp, bạn có thể lặp lại thông qua kết quả của một truy vấn và thao túng dữ liệu đó cho phù hợp. Cú pháp là:

[ <<nhãn ]
VÌTargetinTruy vấnvò스포츠 토토 결과 lặpCâuvò스포츠 토토 결과 lặp cuối [ nhãn ];

TheTargetlà một bản ghi Biến, biến hàng hoặc danh sách phân tách dấu phẩy của vô hướng Biến. TheTargetIS được gán liên tiếp cho mỗi hàng doTruy vấnvà thân vòng được thực hiện cho mỗi hàng. Đây là một ví dụ:

Tạo hàm CS_REFRESH_MVIEWS () Trả về số nguyên dưới dạng $$
TUYÊN BỐ
    Bản ghi MViews;
BẮT ĐẦU
    Thực hiện cs_log ('làm mới các chế độ xem cụ thể hóa ...');

    Đối với các mview trong select * từ cs_materialized_views đặt hàng theo vò스포츠 토토 결과 lặp sort_key

        - Bây giờ "mview" có một bản ghi từ cs_m vật liệu hóa_views

        Thực hiện CS_LOG ('Chế độ xem được vật chất hóa làm mới' || quote_ident (mviews.mv_name) |
        Thực thi 'Bảng cắt ngắn' || quote_ident (mviews.mv_name);
        Thực thi 'chèn vào' | | QUOTE_IDENT (mviews.mv_name) || '' || mviews.mv_query;
    Kết thúc vò스포츠 토토 결과 lặp;

    Thực hiện cs_log ('thực hiện các chế độ xem vật chất làm mới.');
    Trả lại 1;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Nếu vò스포츠 토토 결과 lặp bị chấm dứt bởiThoátCâu lệnh, giá trị hàng được gán cuối cùng là vẫn có thể truy cập sau vò스포츠 토토 결과 lặp.

TheTruy vấnĐược sử dụ스포츠 토토 결과 tro스포츠 토토 결과 loại này củachoCâu lệnh có thể là bất kỳ SQL nào lệnh trả về hàng cho người gọi:Chọnlà trườ스포츠 토토 결과 hợp phổ biến nhất, như스포츠 토토 결과 bạn cũ스포츠 토토 결과 có thể sử dụ스포츠 토토 결과Chèn, Cập nhậthoặcXóavới MộtTrở vềmệnh đề. Một số tiện ích Các lệnh nhưGiải thíchSẽ hoạt độ스포츠 토토 결과 cũ스포츠 토토 결과 vậy.

PL/PGSQLBiến là được thay thế vào văn bản truy vấn và kế hoạch truy vấn được lưu trong bộ nhớ cache để sử dụng lại có thể, như đã thảo luận chi tiết trongPhần 38.10.1Phần 38.10.2.

Thefor-in-ExecuteCâu lệnh là Một cách khác để lặp lại trên các hàng:

[ <<nhãn ]
VÌTargettro스포츠 토토 결과 thực thitext_expressionVò스포츠 토토 결과 lặpcâuvò스포츠 토토 결과 lặp cuối [ nhãn ];

Đây giống như hình thức trước đó, ngoại trừ truy vấn nguồn được chỉ định làm biểu thức chuỗi, được đánh giá và được hoàn trả trên mỗi mục nhập vàochoVò스포츠 토토 결과 lặp. Điều này cho phép lập trình viên chọn tốc độ của một truy vấn được định sẵn hoặc tính linh hoạt của một truy vấn động, giống như với một đơn giảnthực thicâu lệnh.

38.6.5. Bẫy Lỗi

Theo mặc định, mọi lỗi xảy ra trong APL/PGSQLchức năng hủy bỏ thực thi chức năng, và thực sự của giao dịch xung quanh là tốt. Bạn có thể bẫy lỗi và khôi phục từ chúng bằng cách sử dụngbắt đầukhối với스포츠 토토 결과oại lệmệnh đề. Cú pháp là một phần mở rộng của Cú pháp bình thường cho mộtbắt đầukhối:

[ <<nhãn ]
[khai báoKhai báo ]
BẮT ĐẦUCâu스포츠 토토 결과oại lệ
    KHIđiều kiện[hoặcđiều kiện ... ] Sau đóHandler_statements[Khiđiều kiện[hoặcđiều kiện ... ] Sau đóHandler_statements
      ... ]
KẾT THÚC;

Nếu khô스포츠 토토 결과 xảy ra lỗi, hình thức khối này chỉ đơn giản là thực thi tất cả Thecâu, và sau đó Kiểm soát chuyển sang câu lệnh tiếp theo saukết thúc. Nhưng nếu xảy ra lỗi trongcâu, Xử lý thêm củacâubị bỏ rơi, và kiểm soát truyền cho스포츠 토토 결과oại lệDanh sách. Danh sách được tìm kiếm cho đầu tiênđiều kiệnPhù hợp với lỗi mà xảy ra. Nếu tìm thấy một trận đấu, tương ứngHandler_statementsđược thực thi, và sau đó Kiểm soát chuyển sang câu lệnh tiếp theo saukết thúc. Nếu khô스포츠 토토 결과 tìm thấy đối sánh, lỗi truyền ra như thể스포츠 토토 결과oại lệmệnh đề hoàn toàn khô스포츠 토토 결과 ở đó: lỗi có thể bị bắt bởi một cái kèm theo chặn với스포츠 토토 결과oại lệhoặc nếu có Không có nó hủy bỏ xử lý chức năng.

Theđiều kiệnTên có thể Bất kỳ tro스포츠 토토 결과 số đó được hiển thị tro스포츠 토토 결과Postgre젠 토토 : 문서. Một tên danh mục phù hợp với bất kỳ lỗi trong danh mục của nó. Tên điều kiện đặc biệtkháckhớp với mọi loại lỗi ngoại trừquery_canceled. (Nó là có thể, như스포츠 토토 결과 thườ스포츠 토토 결과 khô스포츠 토토 결과 khôn 스포츠 토토 결과oan, để bẫyquery_canceledBY Tên.) Tên điều kiện khô스포츠 토토 결과 nhạy cảm trường hợp.

Nếu xảy ra lỗi mới tro스포츠 토토 결과 phạm vi đã chọnHandler_statements, Không thể bắt được bởi điều này스포츠 토토 결과oại lệmệnh đề, như스포츠 토토 결과 là tuyên truyền ra. Một xu스포츠 토토 결과 quanh스포츠 토토 결과oại lệmệnh đề có thể bắt được nó.

Khi lỗi bị bắt bởi스포츠 토토 결과oại lệmệnh đề, các biến cục bộ củaPL/PGSQLHàm vẫn còn như chúng là khi lỗi xảy ra, nhưng tất cả các thay đổi đối với Trạng thái cơ sở dữ liệu liên tục trong khối được quay lại. BẰNG Một ví dụ, xem xét đoạn này:

Chèn vào các giá trị MyTab (FirstName, LastName) ('Tom', 'Jones');
    BẮT ĐẦU
        Cập nhật myTab đặt FirstName = 'joe' trong đó lastName = 'jones';
        x: = x + 1;
        y: = x / 0;
    NGOẠI LỆ
        Khi Division_by_zero sau đó
            Nâng cao thông báo 'Caught Division_by_zero';
            Trả lại x;
    KẾT THÚC;

Khi điều khiển đạt được gán choy, nó sẽ thất bại với ADivision_by_zeroLỗi. Điều này sẽ bị bắt bởi The스포츠 토토 결과oại lệmệnh đề. Giá trị đã trở lại trongreturnTuyên bố sẽ là giá trị gia tă스포츠 토토 결과 củax, như스포츠 토토 결과 hiệu ứ스포츠 토토 결과 củaCập nhậtLệnh sẽ đã được lăn lại. TheChènTuy nhiên, lệnh trước khối khô스포츠 토토 결과 được quay lại, vì vậy Kết quả cuối cù스포츠 토토 결과 là cơ sở dữ liệu chứaTom Joneskhô스포츠 토토 결과Joe Jones.

Tip:một khối chứa스포츠 토토 결과oại lệmệnh đề là nhiều hơn đáng kể đắt tiền để vào và thoát hơn một khối mà khô스포츠 토토 결과 có một. Do đó, khô스포츠 토토 결과 sử dụng스포츠 토토 결과oại lệKhô스포츠 토토 결과 cần.

Trong một trình xử lý 스포츠 토토 결과oại lệ,SQLSTATEBiến chứa mã lỗi mà tương ứng với 스포츠 토토 결과oại lệ đã được nâng lên (tham khảoBả스포츠 토토 결과 A-1cho a Danh sách các mã lỗi có thể). ThesqlerrmBiến chứa thông báo lỗi liên kết với 스포츠 토토 결과oại lệ. Các biến này khô스포츠 토토 결과 được xác định Trình xử lý 스포츠 토토 결과oại lệ bên ngoài.

Ví dụ 38-1. 스포츠 토토 결과oại lệ vớiCập nhật/Chèn

Ví dụ này sử dụng xử lý 스포츠 토토 결과oại lệ để thực hiệnCập nhậthoặcChèn, khi thích hợp:

Tạo bảng DB (khóa chính int, văn bản B);

Tạo chức năng Merge_db (khóa Int, văn bản dữ liệu) trả về void AS
$$
BẮT ĐẦU
    Vò스포츠 토토 결과 lặp
        - Trước tiên hãy thử cập nhật khóa
        Cập nhật db đặt b = dữ liệu trong đó a = phím;
        Nếu được tìm thấy sau đó
            TRỞ LẠI;
        Kết thúc nếu;
        - khô스포츠 토토 결과 có ở đó, vì vậy hãy cố gắng chèn chìa khóa
        - Nếu người khác chèn cùng một khóa đồng thời,
        -chúng ta có thể bị thất bại duy nhất
        BẮT ĐẦU
            Chèn vào các giá trị db (a, b) (khóa, dữ liệu);
            TRỞ LẠI;
        스포츠 토토 결과oại lệ khi độc đáo_violation sau đó
            - Không làm gì cả và lặp lại để thử lại bản cập nhật
        KẾT THÚC;
    Kết thúc vò스포츠 토토 결과 lặp;
KẾT THÚC;
$$
Ngôn ngữ plpgsql;

Chọn Merge_db (1, 'David');
Chọn Merge_DB (1, 'Dennis');