Cấu trúc điều tỷ lệ kèo bóng đá tối nay có lẽ là phần hữu ích nhất (và quan trọng) củaPL/PGSQL. VớiPL/PGSQLCác cấu trúc điều tỷ lệ kèo bóng đá tối nay, bạn có thể thao tácPostgreSQLDữ liệu theo cách rất linh hoạt và mạnh mẽ.
Có hai lệnh có sẵn cho phép bạn trả về dữ liệu từ tỷ lệ kèo bóng đá tối nay hàm:return
vàReturn Next
.
return
returnBiểu thức
;
return
với biểu thức chấm dứt hàm và trả về giá trị củaBiểu thức
cho người gọi. Mẫu này được sử dụng choPL/PGSQLCác chức năng không trả về tỷ lệ kèo bóng đá tối nay bộ.
Trong tỷ lệ kèo bóng đá tối nay hàm trả về loại vô hướng, kết quả của biểu thức sẽ tự động được chuyển vào loại trả về của hàm như được mô tả cho các bài tập. Nhưng để trả về giá trị tổng hợp (hàng), bạn phải viết tỷ lệ kèo bóng đá tối nay biểu thức phân phối chính xác bộ cột được yêu cầu.
Nếu bạn khai báo chức năng với tỷ lệ kèo bóng đá tối nay tham số đầu ra, hãy viết chỉreturn
Không có biểu thức. tỷ lệ kèo bóng đá tối nay giá trị hiện tại của tỷ lệ kèo bóng đá tối nay biến tham số đầu ra sẽ được trả về.
Nếu bạn tuyên bố chức năng trả vềvoid
, Areturn
Câu lệnh có thể được sử dụng để thoát chức năng sớm; nhưng không viết tỷ lệ kèo bóng đá tối nay biểu thức saureturn
.
Giá trị trả về của hàm không thể được xác định. Nếu điều tỷ lệ kèo bóng đá tối nay đạt đến phần cuối của khối cấp cao nhất của hàm mà không nhấn Areturn
Câu lệnh, tỷ lệ kèo bóng đá tối nay lỗi thời gian chạy sẽ xảy ra. Hạn chế này không áp dụng cho các chức năng với các tham số đầu ra và các chức năng trả vềvoid
Tuy nhiên. Trong những trường hợp đóreturn
Câu tỷ lệ kèo bóng đá tối naynh được tự động thực hiện nếu khối cấp cao kết thúc.
tỷ lệ kèo bóng đá tối nay số ví dụ:
- tỷ lệ kèo bóng đá tối nay chức năng trả về loại vô hướng
Return Next
vàTruy vấn trả lại
Return NextBiểu thức
;Truy vấn
;chuỗi tỷ lệ kèo bóng đá tối naynh
[sử dụngexpression
[, ...]];
tỷ lệ kèo bóng đá tối nay APL/PGSQLHàm được tuyên bố trả lạisetof
, 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ả lại được chỉ định bởi tỷ lệ kèo bóng đá tối nay chuỗiSOMEYPE
Return Next
hoặcTruy vấn trả về
tỷ lệ kèo bóng đá tối nay lệnh, và sau đó là cuối cùngreturn
tỷ lệ kèo bóng đá tối naynh không có đối số được sử dụng để chỉ ra rằng chức năng đã hoàn thành thực thi.trở lại tiếp theo
có thể được sử dụng với cả tỷ lệ kèo bóng đá tối nay loại dữ liệu vô hướng và tổng hợp; với loại kết quả tổng hợp, toàn bộHồiBảngKhăncủa kết quả sẽ được trả về.Truy vấn trả lại
Bổ sung kết quả thực hiện truy vấn cho tập kết quả của hàm.Return Next
vàTruy vấn trả lại
có thể được xen kẽ tự do trong tỷ lệ kèo bóng đá tối nay hàm hoàn trả lại, trong trường hợp đó kết quả của chúng sẽ được nối.
Return Next
vàTruy vấn trả về
Không thực sự trả lại từ hàm - chúng chỉ đơn giản là nối số 0 hoặc nhiều hàng vào tập kết quả của hàm. Thực thi sau đó tiếp tục với câu tỷ lệ kèo bóng đá tối naynh tiếp theo trongPL/PGSQLHàm. Như liên tiếptrở lại tiếp theo
hoặcTruy vấn trả về
Các lệnh được thực thi, tập kết quả được xây dựng. tỷ lệ kèo bóng đá tối nay cuối cùngreturn
, không có đối số, khiến kiểm soát thoát khỏi hàm (hoặc bạn chỉ có thể để điều tỷ lệ kèo bóng đá tối nay đạt đến phần cuối của hàm).
Truy vấn trả về
có biến thểTruy vấn trả về
, trong đó chỉ định truy vấn sẽ được thực thi động. Biểu thức tham số có thể được chèn vào chuỗi truy vấn được tính toán thông quasử dụng
, theo cách tương tự như trongthực thi
tỷ lệ kèo bóng đá tối naynh.
Nếu bạn khai báo chức năng với tỷ lệ kèo bóng đá tối nay tham số đầu ra, hãy viết chỉReturn Next
Khô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 (các) biến tham số đầu ra sẽ được lưu để trả về cuối cùng như tỷ lệ kèo bóng đá tối nay hàng của kết quả.Setof Record
tỷ lệ kèo bóng đá tối nay có nhiều tham số đầu ra hoặcsetof
tỷ lệ kèo bóng đá tối nay chỉ có một tham số đầu ra của loạiSOMEYPE
SOMEYPE
, Để tạo chức năng hoàn trả lại với tỷ lệ kèo bóng đá tối nay tham số đầu ra.
Đây là tỷ lệ kèo bóng đá tối nay ví dụ về chức năng sử dụngtrở lại tiếp theo
:
Tạo bảng foo (fooid int, foosubid int, fooname văn bản);
Đây là tỷ lệ kèo bóng đá tối nay ví dụ về chức năng sử dụngTruy vấn trả lại
:
Tạo chức năng get_available_flightid (ngày) Trả về số nguyên setof AS
Việc triển khai hiện tại củatrở lại tiếp theo
vàTruy vấn trả lại
Lưu trữ toàn bộ tập kết quả trước tỷ lệ kèo bóng đá tối nay quay lại 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 tập kết quả rất lớn, hiệu suất có thể kém: Dữ liệu sẽ được ghi vào đĩa để tránh kiệt sức bộ nhớ, nhưng chính chức năng sẽ không quay lại cho đến tỷ lệ kèo bóng đá tối nay toàn bộ tập kết quả được tạo ra. Một phiên bản tương lai củaPL/PGSQLcó thể cho phép người dùng xác định các chức năng trả lại đã đặt không có giới hạn này. Hiện tại, điểm mà dữ liệu bắt đầu được ghi vào đĩa được điều tỷ lệ kèo bóng đá tối nay bởiwork_memBiến cấu hình. Quản trị viên có đủ bộ nhớ để lưu trữ tỷ lệ kèo bóng đá tối nay bộ kết quả lớn hơn trong bộ nhớ nên xem xét tăng tham số này.
tỷ lệ kèo bóng đá tối nay thủ tục không có giá trị trả về. Do đó, tỷ lệ kèo bóng đá tối nay thủ tục có thể kết thúc mà không córeturn
Tuyên bố. Nếu bạn muốn sử dụngreturn
Câu tỷ lệ kèo bóng đá tối naynh để thoát mã sớm, chỉ viếtreturn
không có biểu thức.
Nếu quy trình có tham số đầu ra, tỷ lệ kèo bóng đá tối nay giá trị cuối cùng của tỷ lệ kèo bóng đá tối nay biến tham số đầu ra sẽ được trả về cho trình gọi.
APL/PGSQLchức năng, thủ tục hoặcdo
khối có thể gọi tỷ lệ kèo bóng đá tối nay thủ tục bằng cách sử dụnggọi
. tỷ lệ kèo bóng đá tối nay tham số đầu ra được xử lý khác với cáchGọi
Hoạt động trong SQL đơn giản. Mỗiout
hoặcInout
Tham số của quy trình phải tương ứng với tỷ lệ kèo bóng đá tối nay biến tronggọi
Câu lệnh và bất cứ điều gì mà thủ tục trả về được gán lại cho biến đó sau tỷ lệ kèo bóng đá tối nay nó trả về. Ví dụ:
Tạo quy trình Triple (Inout X Int)
Biến tương ứng với tham số đầu ra có thể là tỷ lệ kèo bóng đá tối nay biến đơn giản hoặc trường của biến loại tổng hợp. Hiện tại, nó không thể là tỷ lệ kèo bóng đá tối nay yếu tố của tỷ lệ kèo bóng đá tối nay mảng.
nếu
vàcase
tỷ lệ kèo bóng đá tối nay câu lệnh cho phép bạn thực thi tỷ lệ kèo bóng đá tối nay lệnh thay thế dựa trên tỷ lệ kèo bóng đá tối nay điều kiện nhất định.PL/PGSQLCó ba dạngnếu
:
Nếu ... thì ... kết thúc nếu
Nếu ... thì ... khác ... kết thúc nếu
Nếu ... thì ... elsif ... sau đó ... khác ... kết thúc nếu
và hai dạngcase
:
trường hợp ... tỷ lệ kèo bóng đá tối nay ... sau đó ... khác ... trường hợp kết thúc
trường hợp tỷ lệ kèo bóng đá tối nay ... sau đó ... khác ... trường hợp kết thúc
if-then
nếuBoolean-biểu hiện
sau đó24630_24642
kết thúc if;
if-then
Câu tỷ lệ kèo bóng đá tối naynh là dạng đơn giản nhất củanếu
. tỷ lệ kèo bóng đá tối nay câu giữasau đó
vàkết thúc nếu
sẽ được thực thi nếu điều kiện là đúng. Nếu không, chúng bị bỏ qua.
Ví dụ:
Nếu v_user_id < 0 sau đó
if-then-else
nếuBoolean-biểu hiện
sau đócâu tỷ lệ kèo bóng đá tối naynh
kháccâu
kết thúc if;
if-then-else
Báo cáo thêm vàoif-then
Bằng cách cho phép bạn chỉ định tỷ lệ kèo bóng đá tối nay tập hợp các câu lệnh thay thế nên được thực thi nếu điều kiện không đúng. (Lưu ý điều này bao gồm trường hợp điều kiện đánh giá là null.)
ví dụ:
Nếu ParentID là null hoặc ParentID = ''
Nếu V_Count 0 sau đó
IF-THEN-ELEF
nếuBoolean-biểu hiện
sau đócâu
[elsifBoolean-biểu hiện
sau đóCâu
[elsifBoolean-biểu hiện
sau đóCâu
...]]khácCâu
]
Đôi tỷ lệ kèo bóng đá tối nay có nhiều hơn chỉ hai lựa chọn thay thế.IF-THEN-ELEF
Cung cấp tỷ lệ kèo bóng đá tối nay phương pháp thuận tiện để kiểm tra tỷ lệ kèo bóng đá tối nay số lựa chọn thay thế lần lượt. Thenếu
Điều kiện được kiểm tra liên tiếp cho đến khi cái đầu tiên được tìm thấy đúng. Sau đó, (các) câu lệnh liên quan được thực thi, sau đó điều tỷ lệ kèo bóng đá tối nay chuyển sang câu lệnh tiếp theo saukết thúc nếu
. (Bất kỳ sau đónếu
Điều kiện làkhôngĐã kiểm tra.) Nếu không cónếu
Điều kiện là đúng, sau đókhác
khối (nếu có) được thực thi.
Đây là tỷ lệ kèo bóng đá tối nay ví dụ:
Nếu số = 0 thì sau đó
Từ khóaelsif
cũng có thể được đánh vầnotherif
.
tỷ lệ kèo bóng đá tối nay cách khác để hoàn thành cùng tỷ lệ kèo bóng đá tối nay nhiệm vụ là làm tổif-then-else
Câu tỷ lệ kèo bóng đá tối naynh, như trong ví dụ sau:
Nếu demo_row.sex = 'm' sau đó
Tuy nhiên, phương pháp này yêu cầu viết tỷ lệ kèo bóng đá tối nay phù hợpkết thúc nếu
cho mỗinếu
, vì vậy nó cồng kềnh hơn nhiều so với sử dụngelsif
tỷ lệ kèo bóng đá tối nay có nhiều lựa chọn thay thế.
case
caseTìm kiếm-biểu hiện
tỷ lệ kèo bóng đá tối nayBiểu thức
[,Biểu thức
[...]] Sau đócâu
[tỷ lệ kèo bóng đá tối nayBiểu thức
[,Biểu thức
[...]] Sau đóCâu
...]kháccâu
]
Hình thức đơn giản củacase
Cung cấp thực thi có điều kiện dựa trên sự bình đẳng của tỷ lệ kèo bóng đá tối nay toán hạng. TheTìm kiếm-biểu hiện
được đánh giá (tỷ lệ kèo bóng đá tối nay lần) và liên tiếp so với mỗiBiểu thức
trongtỷ lệ kèo bóng đá tối nay
mệnh đề. Nếu tỷ lệ kèo bóng đá tối nay trận đấu được tìm thấy, thì tương ứngcâu
được thực thi và sau đó điều tỷ lệ kèo bóng đá tối nay chuyển sang câu lệnh tiếp theo sautrường hợp kết thúc
. (Tiếp theo30402_30408
Biểu thức không được đánh giá.) Nếu không tìm thấy khớp nào,khác
Câu
được thực thi; Nhưng nếukhác
không có mặt, sau đó làcase_not_found
Ngoại lệ được nâng lên.
Đây là tỷ lệ kèo bóng đá tối nay ví dụ đơn giản:
trường hợp x
case
trường hợpBoolean-biểu hiện
sau đócâu tỷ lệ kèo bóng đá tối naynh
[tỷ lệ kèo bóng đá tối nayBoolean-biểu hiện
sau đócâu
...]kháccâu
]
hình thức tìm kiếm củacase
Cung cấp thực thi có điều kiện dựa trên sự thật của tỷ lệ kèo bóng đá tối nay biểu thức Boolean. Mỗitỷ lệ kèo bóng đá tối nay
mệnh đềBoolean-biểu hiện
được đánh giá lần lượt, cho đến tỷ lệ kèo bóng đá tối nay tìm thấy sản lượngTRUE
. Sau đó tương ứngCâu
được thực thi và sau đó điều tỷ lệ kèo bóng đá tối nay chuyển sang câu lệnh tiếp theo sauCase End
. (Tiếp theotỷ lệ kèo bóng đá tối nay
Biểu thức không được đánh giá.) Nếu không tìm thấy kết quả đúng,khác
Câu
được thực thi; Nhưng nếukhác
không có mặt, sau đó Acase_not_found
Ngoại lệ được nâng lên.
Đây là tỷ lệ kèo bóng đá tối nay ví dụ:
trường hợp
Hình thức này củacase
hoàn toàn tương đương vớiif-then-elel
, Ngoại trừ quy tắc đạt được sự bỏ quakhác
mệnh đề dẫn đến lỗi thay vì không làm gì cả.
vớivòng lặp
,Thoát
,Tiếp tục
,trong tỷ lệ kèo bóng đá tối nay
,cho
vàforeach
Câu tỷ lệ kèo bóng đá tối naynh, bạn có thể sắp xếp choPL/PGSQLhàm để lặp lại tỷ lệ kèo bóng đá tối nay loạt các lệnh.
vòng lặp
[<<nhãn
]câu
vòng lặp cuối [Nhãn
];
vòng lặp
Xác định một vòng lặp vô điều kiện được lặp lại vô thời hạn cho đến tỷ lệ kèo bóng đá tối nay bị chấm dứt bởi mộtThoát
hoặcreturn
Tuyên bố. Tùy chọnnhãn
có thể được sử dụng bởiThoát
vàTiếp tục
tỷ lệ kèo bóng đá tối nay câu trong tỷ lệ kèo bóng đá tối nay vòng lặp lồng nhau để chỉ định tỷ lệ kèo bóng đá tối nay câu lệnh nào được đề cập đến.
Thoát
Thoát [nhãn
] [tỷ lệ kèo bóng đá tối nayBoolean-biểu hiện
];
nếu khôngnhãn
được đưa ra, vòng lặp trong cùng được chấm dứt và câu tỷ lệ kèo bóng đá tối naynh sauKết thúc vòng
đượ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ố mức bên ngoài của vòng lặp hoặc khối. Sau đó, vòng lặp hoặc khối được đặt tên bị chấm dứt và điều tỷ lệ kèo bóng đá tối nay tiếp tục với câu lệnh sau khi vòng lặp/khối tương ứngkết thúc
.
nếutỷ lệ kèo bóng đá tối nay
được chỉ định, lối thoát vòng chỉ xảy ra nếuBoolean-biểu hiện
là đúng. Nếu không, kiểm soát chuyển sang câu tỷ lệ kèo bóng đá tối naynh sauThoát
.
Thoát
có thể được sử dụng với tất cả tỷ lệ kèo bóng đá tối nay loại vòng lặp; nó không giới hạn sử dụng với tỷ lệ kèo bóng đá tối nay vòng vô điều kiện.
tỷ lệ kèo bóng đá tối nay được sử dụng vớiBắt đầu
khối,Thoát
Chuyển điều tỷ lệ kèo bóng đá tối nay sang câu lệnh tiếp theo sau khi kết thúc khối. Lưu ý rằng một nhãn phải được sử dụng cho mục đích này;Thoát
Không bao giờ được coi là phù hợp vớibắt đầu
khối. (Đây là tỷ lệ kèo bóng đá tối nay sự thay đổi từ các bản phát hành trước 8.4 củaPostgreSQL, sẽ cho phép không nhãnThoát
Để phù hợp với ABắt đầu
khối.)
ví dụ:
Vòng lặp
Tiếp tục
Tiếp tục [nhãn
] [tỷ lệ kèo bóng đá tối nayBoolean-biểu hiện
];
nếu khôngnhãn
được đưa ra, lần lặp tiếp theo của vòng lặp trong cùng được bắt đầu. Đó là, tất cả các câu lệnh còn lại trong thân vòng được bỏ qua và điều tỷ lệ kèo bóng đá tối nay trả về biểu thức điều tỷ lệ kèo bóng đá tối nay vòng (nếu có) để xác định xem có cần lặp lại vòng lặp khác hay không.nhãn
Có mặt, nó chỉ định nhãn của vòng lặp mà thực thi sẽ được tiếp tục.
nếutỷ lệ kèo bóng đá tối nay
được chỉ định, lần lặp tiếp theo của vòng lặp chỉ được bắt đầu nếuBoolean-biểu hiện
là đúng. Nếu không, kiểm soát chuyển sang câu tỷ lệ kèo bóng đá tối naynh sauTiếp tục
.
Tiếp tục
có thể được sử dụng với tất cả tỷ lệ kèo bóng đá tối nay loại vòng lặp; nó không giới hạn sử dụng với tỷ lệ kèo bóng đá tối nay vòng vô điều kiện.
ví dụ:
Vòng lặp
trong tỷ lệ kèo bóng đá tối nay
[<<nhãn
]Boolean-biểu hiện
vòng lặpCâu
vòng lặp cuối [nhãn
];
Thetrong tỷ lệ kèo bóng đá tối nay
Câu lệnh lặp lại tỷ lệ kèo bóng đá tối nay chuỗi 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 phần thân vòng.
Ví dụ:
Trong tỷ lệ kèo bóng đá tối nay số lượng_owed 0 và gift_cert
cho
(biến thể số nguyên)[<<nhãn
]tên
trong [đảo ngược]Biểu thức
..Biểu thức
[bởiexpression
] vòng lặpcâu tỷ lệ kèo bóng đá tối naynh
vòng lặp cuối [nhãn
];
Hình thức này củacho
Tạo tỷ lệ kèo bóng đá tối nay vòng lặp lặp đi lặp lại trên tỷ lệ kèo bóng đá tối nay loạt các giá trị số nguyên. Biếntên
được định nghĩa tự động là loạiSố nguyên
và chỉ tồn tại bên trong vòng lặp (bất kỳ định nghĩa hiện có nào của tên biến đều bị bỏ qua trong vòng lặp). Hai biểu thức cho giới hạn dưới và trên của phạm vi được đánh giá một lần tỷ lệ kèo bóng đá tối nay vào vòng lặp.bởi
mệnh đề không được chỉ định Bước lặp là 1, nếu không thì đó là giá trị được chỉ định trongbởi
mệnh đề, tỷ lệ kèo bóng đá tối nay lần nữa được đánh giá tỷ lệ kèo bóng đá tối nay lần trên mục nhập vòng lặp. Nếu nhưđảo ngược
được chỉ định thì giá trị bước được trừ, thay vì thêm, sau mỗi lần lặp.
tỷ lệ kèo bóng đá tối nay số ví dụ về số nguyêncho
vòng lặp:
cho tôi trong 1..10 vòng lặp
Nếu giới hạn dưới lớn hơn giới hạn trên (hoặc nhỏ hơn, trongđảo ngược
trường hợp), phần thân vòng không được thực thi. Không có lỗi được nêu ra.
Nếu Anhãn
được gắn vàocho
Vòng lặp sau đó biến vòng số nguyên có thể được tham chiếu bằng tỷ lệ kèo bóng đá tối nay tên đủ điều kiện, sử dụng đónhãn
.
Sử dụng tỷ lệ kèo bóng đá tối nay loại kháccho
Vòng lặp, bạn có thể lặp lại thông qua kết quả của tỷ lệ kèo bóng đá tối nay truy vấn và thao tác dữ liệu đó phù hợp. Cú pháp là:
[<<nhãn
]Target
inTruy vấn
vòng lặpcâu tỷ lệ kèo bóng đá tối naynh
vòng lặp cuối [nhãn
];
TheTarget
là biến bản ghi, biến hàng hoặc danh sách tỷ lệ kèo bóng đá tối nay biến vô hướng được phân tách bằng dấu phẩy. TheTarget
được gán liên tiếp cho mỗi hàng doTruy vấn
và thân vòng được thực thi cho mỗi hàng. Đây là tỷ lệ kèo bóng đá tối nay ví dụ:
Tạo chức năng refresh_mviews () Trả về số nguyên dưới dạng $$
Nếu vòng lặp bị chấm dứt bởiThoát
Câu tỷ lệ kèo bóng đá tối naynh, giá trị hàng được gán cuối cùng vẫn có thể truy cập được sau vòng lặp.
TheTruy vấn
Được sử dụng trong loại nàycho
Câu tỷ lệ kèo bóng đá tối naynh có thể là bất kỳ tỷ lệ kèo bóng đá tối naynh SQL nào trả về hàng cho người gọi:Chọn
là trường hợp phổ biến nhất, nhưng bạn cũng có thể sử dụngChèn
,Cập nhật
hoặcXóa
với ATrở về
mệnh đề. tỷ lệ kèo bóng đá tối nay số lệnh tiện ích nhưGiải thích
cũng sẽ hoạt động.
PL/PGSQLBiến được thay thế bằng tỷ lệ kèo bóng đá tối nay tham số truy vấn và gói truy vấn được lưu trữ để sử dụng lại có thể, như đã thảo luận chi tiết trongPhần 43.11.1vàPhần 43.11.2.
TheCâu lệnh là tỷ lệ kèo bóng đá tối nay cách khác để lặp lại trên các hàng:
[<<nhãn
]Target
trong thực thitext_expression
[sử dụngBiểu thức
[, ...]] vòng lặpcâu
vòng lặp cuối [nhãn
];
Đây giống như biểu mẫu 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à trả lời trên mỗi mục nhập vàocho
Vòng lặp. Điều này cho phép lập trình viên chọn tốc độ của tỷ lệ kèo bóng đá tối nay truy vấn được định sẵn hoặc tính linh hoạt của truy vấn động, giống như với tỷ lệ kèo bóng đá tối nay đơn giảnthực thi
Tuyên bố. Như vớithực thi
, giá trị tham số có thể được chèn vào tỷ lệ kèo bóng đá tối naynh động thông quaSử dụng
.
tỷ lệ kèo bóng đá tối nay cách khác để chỉ định truy vấn có kết quả nên được lặp đi lặp lại là tuyên bố đó là con trỏ. Điều này được mô tả trongPhần 43.7.4.
Theforeach
Vòng lặp giống nhưcho
Vòng lặp, nhưng thay vì lặp qua các hàng được trả về bởi tỷ lệ kèo bóng đá tối nay truy vấn SQL, nó lặp lại thông qua các phần tử của giá trị mảng. (Nói chung,foreach
có nghĩa là để lặp qua tỷ lệ kèo bóng đá tối nay thành phần của biểu thức có giá trị tổng hợp; tỷ lệ kèo bóng đá tối nay biến thể để lặp qua vật liệu tổng hợp bên cạnh tỷ lệ kèo bóng đá tối nay mảng có thể được thêm vào trong tương lai.)foreach
Câu lệnh để lặp qua tỷ lệ kèo bóng đá tối nay mảng là:
[<<nhãn
]Target
[SliceSố
] trong mảngBiểu thức
vòng lặpcâu
vòng lặp cuối [Nhãn
];
khôngSlice
hoặc nếuSlice 0
được chỉ định, vòng lặp lặp qua tỷ lệ kèo bóng đá tối nay phần tử riêng lẻ của mảng được tạo ra bằng cách đánh giáBiểu thức
. TheTarget
Biến được gán cho mỗi giá trị phần tử theo trình tự và phần thân vòng được thực thi cho mỗi phần tử. Dưới đây là tỷ lệ kèo bóng đá tối nay ví dụ về việc lặp qua các phần tử của mảng số nguyên:
Tạo chức năng Sum (int []) Trả về int8 dưới dạng $$
tỷ lệ kèo bóng đá tối nay yếu tố được truy cập theo thứ tự lưu trữ, bất kể số lượng kích thước mảng. Mặc dùTarget
thường chỉ là một biến duy nhất, nó có thể là một danh sách các biến tỷ lệ kèo bóng đá tối nay lặp qua một mảng các giá trị tổng hợp (bản ghi). Trong trường hợp đó, với mỗi phần tử mảng, các biến được gán từ các cột liên tiếp của giá trị tổng hợp.
với tích cựcSlice
Value,foreach
lặp lại thông qua tỷ lệ kèo bóng đá tối nay lát của mảng thay vì tỷ lệ kèo bóng đá tối nay phần tử đơn. TheSlice
Giá trị phải là hằng số nguyên không lớn hơn số lượng kích thước của mảng. TheTarget
Biến phải là tỷ lệ kèo bóng đá tối nay mảng và nó nhận được các lát liên tiếp của giá trị mảng, trong đó mỗi lát có số lượng kích thước được chỉ định bởiSlice
. Dưới đây là tỷ lệ kèo bóng đá tối nay ví dụ về việc lặp lại thông qua các lát tỷ lệ kèo bóng đá tối nay chiều:
Tạo chức năng scan_rows (int []) trả về void dưới dạng $$
Theo mặc định, mọi lỗi xảy ra trong APL/PGSQLHàm phá thai thực thi chức năng và giao dịch xung quanh. Bạn có thể bẫy lỗi và khôi phục từ chúng bằng cách sử dụngbắt đầu
khối vớingoại lệ
mệnh đề. Cú pháp là tỷ lệ kèo bóng đá tối nay phần mở rộng của cú pháp bình thường cho tỷ lệ kèo bóng đá tối naybắt đầu
khối:
[<<nhãn
]khai báoKhai báo
]câu
Ngoại lệđiều kiện
[hoặcđiều kiện
...] sau đóHandler_statements
[tỷ lệ kèo bóng đá tối nayđiều kiện
[hoặcđiều kiện
...] Sau đóHandler_statements
...]
Nếu không xảy ra lỗi, hình thức khối này chỉ đơn giản là thực thi tất cảcâu tỷ lệ kèo bóng đá tối naynh
, và sau đó điều tỷ lệ kèo bóng đá tối nay 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êmCâu
bị bỏ rơi và điều tỷ lệ kèo bóng đá tối nay truyền chongoại lệ
Danh sách. Danh sách được tìm kiếm cho đầu tiênđiều kiện
Kết hợp lỗi xảy ra. Nếu tìm thấy tỷ lệ kèo bóng đá tối nay trận đấu, tương ứngHandler_statements
được thực thi và sau đó điều tỷ lệ kèo bóng đá tối nay truyền sang câu lệnh tiếp theo saukết thúc
. Nếu không tìm thấy khớp nào, lỗi sẽ truyền ra như thểNgoại lệ
mệnh đề hoàn toàn không có: lỗi có thể bị bắt bởi tỷ lệ kèo bóng đá tối nay khối kèm theo vớiNgoại lệ
hoặc nếu không có ai phá hủy việc xử lý chức năng.
Theđiều kiện
Tên có thể là bất kỳ tên nào được hiển thị trongPhụ lục A. tỷ lệ kèo bóng đá tối nay tên danh mục phù hợp với bất kỳ lỗi trong danh mục của nó.khác
khớp với mọi loại lỗi ngoại trừquery_canceled
vàassert_failure
. (Có thể, nhưng thường không khôn ngoan, để bẫy hai loại lỗi đó theo tên.) Tên điều kiện không nhạy cảm với trường hợp.SQLSTATE
Mã; Ví dụ: đây là tương đương:
tỷ lệ kèo bóng đá tối nay Division_by_zero sau đó ...
Nếu xảy ra lỗi mới trong phạm vi đã chọnHandler_statements
, nó không thể bị bắt bởi điều nàyNgoại lệ
mệnh đề, nhưng được truyền ra. tỷ lệ kèo bóng đá tối nay xung quanhNgoại lệ
mệnh đề có thể bắt được nó.
tỷ lệ kèo bóng đá tối nay lỗi bị bắt bởingoại lệ
mệnh đề, tỷ lệ kèo bóng đá tối nay biến cục bộ củaPL/PGSQLChức năng vẫn còn như tỷ lệ kèo bóng đá tối nay 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. Ví dụ, hãy xem xét đoạn này:
Chèn vào tỷ lệ kèo bóng đá tối nay giá trị MyTab (FirstName, LastName) ('Tom', 'Jones');
Khi điều tỷ lệ kèo bóng đá tối nay đạt được gán choy
, nó sẽ thất bại với ADivision_by_zero
Lỗi. Điều này sẽ bị bắt bởiNgoại lệ
mệnh đề. Giá trị được trả về trongReturn
Câu tỷ lệ kèo bóng đá tối naynh sẽ là giá trị gia tăng củax
, nhưng tỷ lệ kèo bóng đá tối nay hiệu ứng củaCập nhật
tỷ lệ kèo bóng đá tối naynh sẽ được quay lại. TheChèn
Tuy nhiên, tỷ lệ kèo bóng đá tối naynh trước khối không được quay lại, do đó, kết quả cuối cùng là cơ sở dữ liệu chứaTom Jones
khôngJoe Jones
.
tỷ lệ kèo bóng đá tối nay khối chứaNgoại lệ
mệnh đề đắt hơn đáng kể tỷ lệ kèo bóng đá tối nay nhập và thoát so với một khối mà không có một. Do đó, không sử dụngNgoại lệ
Không cần.
Ví dụ 43.2.Ngoại lệ vớiCập nhật
/Chèn
Ví dụ này sử dụng xử lý ngoại lệ để thực hiệnCập nhật
hoặcChèn
, tỷ lệ kèo bóng đá tối nay thích hợp. Khuyến nghị rằng các ứng dụng sử dụngChèn
vớitrên xung đột do cập nhật
thay vì thực sự sử dụng mẫu này. Ví dụ này chủ yếu phục vụ để minh họa việc sử dụngPL/PGSQLCấu trúc luồng điều tỷ lệ kèo bóng đá tối nay:
Tạo bảng DB (khóa chính int, văn bản B);
Mã hóa này giả địnhđộc đáo_violation
Lỗi là doChèn
, và không phải, nói, tỷ lệ kèo bóng đá tối nayChèn
Trong tỷ lệ kèo bóng đá tối nay hàm kích hoạt trên bảng. Nó cũng có thể sai nếu có nhiều hơn tỷ lệ kèo bóng đá tối nay chỉ mục duy nhất trên bảng, vì nó sẽ thử lại hoạt động bất kể chỉ số nào gây ra lỗi.
Người xử lý ngoại lệ thường cần xác định lỗi cụ thể xảy ra. Có hai cách để có được thông tin về ngoại lệ hiện tại trongPL/PGSQL: Biến đặc biệt vàNhận chẩn đoán xếp chồng
tỷ lệ kèo bóng đá tối naynh.
Trong tỷ lệ kèo bóng đá tối nay trình xử lý ngoại lệ, biến đặc biệtSQLSTATE
Chứa mã lỗi tương ứng với ngoại lệ được nêu ra (tham khảoBảng A.1Để biết danh sách tỷ lệ kèo bóng đá tối nay mã lỗi có thể). Biến đặc biệtsqlerrm
chứa thông báo lỗi được liên kết với ngoại lệ. tỷ lệ kèo bóng đá tối nay biến này không được xác định bên ngoài bộ xử lý ngoại lệ.
Trong tỷ lệ kèo bóng đá tối nay trình xử lý ngoại lệ, người ta cũng có thể lấy thông tin về ngoại lệ hiện tại bằng cách sử dụngNhận chẩn đoán xếp chồng
tỷ lệ kèo bóng đá tối naynh, có biểu mẫu:
Nhận chẩn đoán xếp chồngbiến
= | : =Mục
[, ...];
mỗiMục
là tỷ lệ kèo bóng đá tối nay từ khóa xác định giá trị trạng thái được gán cho được chỉ địnhBiến
(nên thuộc loại dữ liệu phù hợp để nhận nó). tỷ lệ kèo bóng đá tối nay mục trạng thái hiện có được hiển thị trongBảng 43.2.
Bảng 43.2.tỷ lệ kèo bóng đá tối nay mục chẩn đoán lỗi
tên | loại | Mô tả |
---|---|---|
return_sqlstate |
Text |
Mã lỗi SQLSTATE của ngoại lệ |
Cột_name |
Text |
Tên của cột liên quan đến ngoại lệ |
instraint_name |
Text |
Tên của ràng buộc liên quan đến ngoại lệ |
pg_datatype_name |
Text |
Tên của kiểu dữ liệu liên quan đến ngoại lệ |
message_text |
Text |
Văn bản của thông báo chính của ngoại lệ |
Table_Name |
Text |
Tên của bảng liên quan đến ngoại lệ |
Schema_name |
Text |
Tên của lược đồ liên quan đến ngoại lệ |
pg_exception_detail |
Text |
Văn bản của thông báo chi tiết ngoại lệ, nếu có |
pg_exception_hint |
Text |
Văn bản của thông báo gợi ý ngoại lệ, nếu có |
pg_exception_context |
Text |
dòng văn bản mô tả ngăn xếp cuộc gọi tại thời điểm ngoại lệ (xemPhần 43.6.9) |
Nếu ngoại lệ không đặt giá trị cho tỷ lệ kèo bóng đá tối nay mục, tỷ lệ kèo bóng đá tối nay chuỗi trống sẽ được trả về.
Đây là tỷ lệ kèo bóng đá tối nay ví dụ:
Khai báo
TheNhận chẩn đoán
tỷ lệ kèo bóng đá tối naynh, được mô tả trước đây trongPhần 43.5.5, Lấy thông tin về trạng thái thực thi hiện tại (trong tỷ lệ kèo bóng đá tối nayNhận chẩn đoán xếp chồng
tỷ lệ kèo bóng đá tối naynh được thảo luận trên báo cáo thông tin về trạng thái thực thi kể từ lỗi trước đó). Của nópg_context
Mục trạng thái hữu ích để xác định vị trí thực thi hiện tại.pg_context
Trả về tỷ lệ kèo bóng đá tối nay chuỗi văn bản với dòng văn bản mô tả ngăn xếp cuộc gọi. Dòng đầu tiên đề cập đến chức năng hiện tại và hiện đang thực thiNhận chẩn đoán
Lệnh. tỷ lệ kèo bóng đá tối nay dòng thứ hai và bất kỳ dòng tiếp theo nào cũng đề cập đến tỷ lệ kèo bóng đá tối nay chức năng gọi lên thêm ngăn xếp cuộc gọi.
Tạo hoặc thay thế hàm outer_func () trả về số nguyên dưới dạng $$
Nhận Chẩn đoán xếp chồng ... PG_EXception_Context
Trả về cùng tỷ lệ kèo bóng đá tối nay loại dấu vết ngăn xếp, nhưng mô tả vị trí mà tại đó tỷ lệ kèo bóng đá tối nay lỗi được phát hiện, thay vì vị trí hiện tại.
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ớpMẫu nàyĐể báo cáo vấn đề tài liệu.