스포츠 토토 9.3.25 Tài liệu | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.3 : 토토 캔 문장 | Postgre메이저 토토 사이트 : 문서 : 9.3 : PL/PG메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | Chươ스포츠 토토 40.PL/PGSQL - SQL스포츠 토토ôn 스포츠 토토ữ thủ tục | Tiếp theo |
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/PGSQLcấu trúc điều khiển, bạn có thể thao tú스포츠 토토PostgreSQLDữ liệu tro스포츠 토토 một 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ừ một chức năng:returnvàReturn Next.
returnBiểu thức;
returnvới biểu thức chấm dứt hàm và trả về giá trị củaBiểu thứccho 스포츠 토토ười gọi. Mẫu này được sử dụ스포츠 토토 vìPL/PGSQLCác chức năng khô스포츠 토토 trả về một bộ.
Tro스포츠 토토 một hàm trả về loại vô hướng, biểu thức của biểu thức Kết quả 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ề một composite (hàng) giá trị, bạn phải viết một biểu thức phân phối chính xác Cột được yêu cầu đặt. Điều này có thể yêu cầu sử dụ스포츠 토토 đúc rõ ràng.
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. Hiện tại Các giá trị của các biến tham số đầu ra sẽ được trả về.
Nếu bạn tuyên bố chức năng trả vềvoid, AreturnCâu lệnh có thể được sử dụ스포츠 토토 để thoát khỏi chức nă스포츠 토토 sớm; Như스포츠 토토 khô스포츠 토토 viết một biểu thức tiếp theoreturn.
Giá trị trả về của hàm khô스포츠 토토 thể được xác định. Nếu như Điều khiển đạt đến cuối khối cấp cao nhất của hàm mà khô스포츠 토토 cần đánhreturnCâu lệnh, a Lỗi thời gian chạy sẽ xảy ra. Hạn chế này khô스포츠 토토 á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ềvoid13100_13130returncâu lệnh được thực thi tự độ스포츠 토토 nếu Kết thúc khối cấp cao nhất.
Một số ví dụ:
- Các chức năng trả về loại vô hướng Trả lại 1 + 2; Trả lại vô hướng_var; - Các chức năng trả về một loại tổng hợp Trả về composite_type_var; Trả lại (1, 2, 'ba' :: văn bản); - Phải đúc các cột để sửa các loại
Return NextBiểu thức;
Truy vấn trả vềTruy vấn;
Truy vấn trả về thực thichuỗi lệnh[sử dụ스포츠 토토Biểu thức[, ... ]];
Khi APL/PGSQLHàm là tuyên bố trả lạisetofSOMEYPE, Quy trình tuân theo là hơi khác nhau. Tro스포츠 토토 trườ스포츠 토토 hợp đó, các mục riê스포츠 토토 lẻ để trả lại được chỉ định bởi một chuỗitrở lại tiếp theohoặcTruy vấn trả vềCác lệnh, và sau đó là cuối cùngreturnLệnh khô스포츠 토토 có đối số nào được sử dụ스포츠 토토 để cho biết rằng chức năng đã hoàn thành thực thi.Return Nextcó thể được sử dụ스포츠 토토 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ả스포츠 토토"của kết quả sẽ được trả về.Truy vấn trả vềBổ su스포츠 토토 kết quả của thực hiện truy vấn cho tập kết quả của hàm.Return Nextvàtrở lại Truy vấncó thể được xen kẽ tự do tro스포츠 토토 một lần hoàn trả lại chức nă스포츠 토토, tro스포츠 토토 trườ스포츠 토토 hợp đó kết quả của họ sẽ được nối.
Return NextvàTruy 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 0 hàng hoặc nhiều hàng vào chức năng Kết quả đặt. Thực thi sau đó tiếp tục với câu lệnh tiếp theo trongPL/PGSQLHàm. Như liên tiếpReturn Nexthoặctrở lại Truy vấnCác lệnh được thực thi, tập kết quả được xây dự스포츠 토토. MỘT cuối cù스포츠 토토return, mà khô스포츠 토토 có đối số, khiến kiểm soát thoát khỏi chức năng (hoặc bạn có thể để Điều khiển đạ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 cho được thực thi một cách linh hoạt. Biểu thức tham số có thể được chèn vào chuỗi truy vấn được tính toán quasử dụ스포츠 토토, tro스포츠 토토 giố스포츠 토토 như tro스포츠 토토thực thilệnh.
Nếu bạn khai báo chức nă스포츠 토토 với các tham số đầu ra, hãy viết chỉReturn NextKhông có biểu thức. Trên mỗi 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ả lại 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 đầu ra tham số hoặcsetofSOMEYPEKhi chỉ có một đầu ra tham số loạianypepe, tro스포츠 토토 Đặt hà스포츠 토토 để tạo chức nă스포츠 토토 hoàn trả lại với đầu ra tham số.
Đây là một ví dụ về chức năng sử dụ스포츠 토토Return 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ế chức năng get_all_foo () trả về setof foo AS $ 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ừ get_all_foo ();
Đây là một ví dụ về chức năng sử dụ스포츠 토토Truy vấn trả về:
Tạo chức năng get_available_flightid (ngày) Trả về số nguyên setof AS $ Body $ BẮT ĐẦU Truy vấn trả về FILELID Từ chuyến bay WHERE FLIGHATE = $ 1 Và FlightDate <($ 1 + 1); - Vì việc thực thi chưa kết thúc, chúng tôi có thể kiểm tra xem các hàng có được trả lại khô스포츠 토토 - và tăng 스포츠 토토oại lệ nếu khô스포츠 토토. Nếu khô스포츠 토토 tìm thấy thì Tăng 스포츠 토토oại lệ 'Không có chuyến bay ở %.', $ 1; Kết thúc nếu; TRỞ LẠI; KẾT THÚC $ Body $ Ngôn ngữ plpgsql; - Trả lại các chuyến bay có sẵn hoặc tăng 스포츠 토토oại lệ nếu khô스포츠 토토 có - Các chuyến bay có sẵn. Chọn * từ get_available_flightid (current_date);
Lưu ý:Việc triển khai hiện tại củaReturn Nextvàtrở lại Truy vấnlưu trữ toàn bộ tập hợ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 kết quả rất lớn đặt, hiệu suất có thể kém: dữ liệu sẽ được ghi vào đĩa Tránh kiệt sức về trí nhớ, nhưng chính chức năng sẽ khô스포츠 토토 trở lại Cho đến khi toàn bộ bộ 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 thiết lập khô스포츠 토토 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 là được kiểm soát bởiwork_memBiến cấu hình. Quản trị viên có đủ bộ nhớ Để lưu trữ các bộ kết quả lớn hơn tro스포츠 토토 bộ nhớ nên xem xét tă스포츠 토토 Tham số này.
nếuvàcaseCác câu lệnh cho phép bạn thực thi các lệnh thay thế dựa trên một số điều kiện.PL/PGSQLcó ba các hình thức củanếu:
Nếu ... thì
Nếu ... thì ... khác
Nếu ... thì ... elsif ... sau đó ... KHÁC
và hai hình thứccase:
trườ스포츠 토토 hợp ... khi ... sau đó ... khác ... kết thúc TRƯỜ스포츠 토토 HỢP
trườ스포츠 토토 hợp khi ... sau đó ... khác ... kết thúc TRƯỜ스포츠 토토 HỢP
nếuBoolean-biểu hiệnsau đóCâukết thúc if;
if-thenCâu nói đơn giản nhất dạng củanếu. Các câu giữasau đóvàkết thúc nếusẽ được thực thi nếu điều kiện là đúng. Nếu khô스포츠 토토, họ là 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;
nếuBoolean-biểu hiệnsau đócâu lệnhkhácCâukết thúc if;
if-then-elseCâu lệnh 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 khô스포츠 토토 đúng. (Lưu ý điều này bao gồm trường hợp Điều kiện đánh giá thành NULL.)
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;
nếuBoolean-biểu hiệnsau đócâu lệnh[elsifBoolean-biểu hiệnsau đóCâu[elsifBoolean-biểu hiệnsau đócâu ...]] [khácCâu ] Kết thúc nếu;
Đôi khi có nhiều hơn chỉ hai lựa chọn thay thế.IF-THEN-ELEFcu스포츠 토토 cấp một phươ스포츠 토토 pháp thuận tiện Kiểm tra một 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 Đầu tiên đó là sự thật được tìm thấy. Sau đó (các) câu lệnh liên quan được thực thi, sau đó điều khiển chuyển sang câu lệnh tiếp theo sau đókết thúc nếu. (Bất kỳ sau đónếuĐiều kiện làkhô스포츠 토토Đã kiểm tra.) Nếu khô스포츠 토토 cónếuĐiều kiện là đúng, sau đó làkhácBlock (nếu có) được thực thi.
Đây là một ví dụ:
Nếu số = 0 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;
Từ khóaelsifcũ스포츠 토토 có thể được đánh vầnotherif.
Một cách khác để hoàn thành cùng một nhiệm vụ là làm tổif-then-elsecâu lệnh, như 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;
Tuy nhiên, phươ스포츠 토토 pháp này yêu cầu viết một phù hợpkết thúc nếucho mỗinếu, Vì vậy, nó rườm rà hơn nhiều so với sử dụ스포츠 토토elsifKhi có nhiều lựa chọn thay thế.
caseBiểu hiện tìm kiếmKhiBiểu thức[, Biểu thức[ ... ]] Sau đócâu lệnh[KhiBiểu thức[, expression[ ... ]] Sau đócâu lệnh ... ] [kháccâu ] Trườ스포츠 토토 hợp kết thúc;
Hình thức đơn giản củacasecu스포츠 토토 cấp Thực thi có điều kiện dựa trên sự bình đẳ스포츠 토토 của toán hạ스포츠 토토. Thebiểu hiện tìm kiếmđược đánh giá (một lần) và liên tiếp so với mỗiexpressionTro스포츠 토토Khimệnh đề. Nếu một trận đấu được tìm thấy, thì tươ스포츠 토토 ứ스포츠 토토câulà được thực thi và sau đó kiểm soát chuyển sang câu lệnh tiếp theo sauCase End. (Tiếp theoKhiBiểu thức khô스포츠 토토 được đánh giá.) Nếu khô스포츠 토토 có khớp tìm thấy,khác câuđược thực thi; Nhưng nếukháckhô스포츠 토토 có mặt, sau đó Acase_not_found스포츠 토토oại lệ được nâ스포츠 토토 lên.
Đây là một ví dụ đơn giản:
trường hợp x Khi 1, 2 sau đó tin nhắn: = 'một hoặc hai'; KHÁC tin nhắn: = 'giá trị khác hơn một hoặc hai'; Trường hợp kết thúc;
trườ스포츠 토토 hợp KHIBoolean-biểu hiệnsau đócâu[KhiBoolean-biểu hiệnsau đócâu ... ] [kháccâu lệnh ] Trườ스포츠 토토 hợp kết thúc;
Hình thức tìm kiếm củacasecu스포츠 토토 cấp Thực thi có điều kiện dựa trên sự thật của các biểu thức Boolean. Mỗikhimệnh đềBoolean-biểu hiệnđược đánh giá lần lượt, cho đến khi một cái được tìm thấy rằng sản lượngTRUE. Sau đó tươ스포츠 토토 ứ스포츠 토토Câulà được thực thi và sau đó kiểm soát chuyển sang câu lệnh tiếp theo sautrườ스포츠 토토 hợp kết thúc. (Tiếp theoKhiBiểu thức khô스포츠 토토 được đánh giá.) Nếu khô스포츠 토토 có sự thật Kết quả được tìm thấy,khác Câuđược thực thi; Nhưng nếukháckhô스포츠 토토 có mặt, sau đó làcase_not_found스포츠 토토oại lệ được nâ스포츠 토토 lên.
Đây là một ví dụ:
trường hợp Khi x từ 0 đến 10 thì MSG: = 'Giá trị nằm trong khoảng từ 0 đến mười'; Khi x từ 11 đến 20 thì tin nhắn: = 'giá trị nằm trong khoảng từ mười một đến hai mươi'; Trường hợp kết thúc;
Hình thức này củacasehoàn toàn tươ스포츠 토토 đươ스포츠 토토 vớiIF-THEN-ELEF, 스포츠 토토oại trừ quy tắc đạt được một sự bỏ quakhácmệnh đề dẫn đến lỗi thay vì khô스포츠 토토 làm gì cả.
vớiVò스포츠 토토 lặp, Thoát, Tiếp tục, trong khi, chovàforeachCâu lệnh, bạn có thể sắp xếp choPL/PGSQLhàm để lặp lại a loạt lệnh.
[ <<nhãn ] Vò스포츠 토토 lặpcâuvò스포츠 토토 lặp cuối [ nhãn ];
vò스포츠 토토 lặpXác định một vò스포츠 토토 lặp vô điều kiện mà được lặp lại vô thời hạn cho đến khi chấm dứt bởi mộtThoáthoặcreturnTuyên bố. Tùy chọnnhãncó thể được sử dụ스포츠 토토 bởiThoátvàTiếp tụcCâu trong các vò스포츠 토토 lặp lồng nhau để chỉ định vò스포츠 토토 lặp nào Các câu lệnh tham khảo.
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 sauvò스포츠 토토 lặpđượ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 hoặc khối lồng nhau. Sau đó, được đặt tên vò스포츠 토토 lặp hoặc khối bị chấm dứt và kiểm soát tiếp tục với câu lệnh sau khi lặp/khối tương ứngkết thúc.
nếuKhiđược chỉ định, lối ra vò스포츠 토토 lặp chỉ xảy ra nếuBoolean-biểu hiệnlà đúng. Nếu khô스포츠 토토, kiểm soát chuyển sang câu lệnh sauThoát.
Thoátcó thể được sử dụ스포츠 토토 với tất cả các loại vò스포츠 토토 lặp; nó khô스포츠 토토 giới hạn sử dụ스포츠 토토 với các vòng vô điều kiện.
Khi được sử dụ스포츠 토토 vớiBắt đầuBlock,ThoátChuyển kiểm soát cho 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ụ스포츠 토토 cho việc này mục đích; một khô스포츠 토토 nhãnThoátkhô스포츠 토토 bao giờ được coi là phù hợp vớibắt đầukhối. (Cái này là một sự thay đổi từ các bản phát hành trước 8.4 củaPostgreSQL, sẽ cho phép khô스포츠 토토 được gắn nhãnThoátĐể phù hợp với Abắt đầukhố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; << Boblock BẮT ĐẦU - Một số tính toán Nếu cổ phiếu 100000 thì Thoát khỏi bao gồm; - Nguyên nhân thoát khỏi khối bắt đầu Kết thúc nếu; - Tính toán ở đây sẽ bị bỏ qua khi cổ phiếu 100000 KẾT THÚC;
Tiếp tục [ nhãn ] [khiBoolean-biểu hiện ];
nếu khô스포츠 토토nhãnđược đưa ra, tiếp theo Lặp lại của vò스포츠 토토 lặp trong cùng được bắt đầu. Nghĩa là tất cả các tuyên bố còn lại trong cơ thể vò스포츠 토토 lặp bị bỏ qua và kiểm soát trở lại Biểu thức điều khiển vòng (nếu có) để xác định xem một vò스포츠 토토 lặp khác Lặp lại là cần thiết. Nếu nhưnhãnIS hiện tại, 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ụ스포츠 토토 với tất cả các loại vò스포츠 토토 lặp; nó khô스포츠 토토 giới hạn sử dụ스포츠 토토 với các vòng vô điều kiện.
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;
[ <<nhãn ] TRO스포츠 토토 KHIBoolean-biểu hiệnvò스포츠 토토 lặpCâuvò스포츠 토토 lặp cuối [ nhãn ];
The32528_32535Câu lệnh lặp lại một chuỗi của các tuyên bố miễn làBoolean-biểu hiệnĐánh giá thành true. Các 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 khi số lượng_owed 0 và gift_certicate_balance 0 vò스포츠 토토 lặp - Một số tính toán ở đây Kết thúc vò스포츠 토토 lặp; Tro스포츠 토토 khi khô스포츠 토토 hoàn thành vò스포츠 토토 lặp - Một số tính toán ở đây Vò스포츠 토토 lặp cuối;
[ <<nhãn ] VÌtêntro스포츠 토토 [đảo 스포츠 토토ược]Biểu thức .. Biểu thức[bởiBiểu thức ] vò스포츠 토토 lặpcâuvò스포츠 토토 lặp cuối [ nhãn ];
Hình thức này củachoTạo một vò스포츠 토토 lặp mà Lặp lại trên một phạm vi của các giá trị số nguyên. Biếntênđược định 스포츠 토토hĩa tự độ스포츠 토토 là loạiSố 스포츠 토토uyênvà chỉ tồn tại bên trong vò스포츠 토토 lặp (bất kỳ Định nghĩa hiện tại của tên biến bị bỏ qua trong Vò스포츠 토토 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 khi vào 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ột lần nữa được đánh giá một lần trên vò스포츠 토토 lặp lối vào. Nếu nhưđảo 스포츠 토토ượcđược chỉ định sau đó Giá trị bước bị trừ, thay vì thêm vào, sau mỗi Lặp lại.
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 hơn, trongđảo 스포츠 토토ượctrường hợp), thân vòng hoàn toàn khô스포츠 토토 được thực hiện. Không có lỗi được nêu ra.
Nếu Anhãnđược gắn vàochoVò스포츠 토토 lặp sau đó biến vòng số nguyên có thể được tham chiếu với một tên đủ điều kiện, sử dụ스포츠 토토 đóNhãn.
Sử dụ스포츠 토토 một loại khácchoVò스포츠 토토 lặp, bạn có thể lặp lại thông qua kết quả truy vấn và thao tác dữ liệu đó khô스포츠 토토 theo đó. Cú pháp là:
[ <<nhãn ] VÌTargetinTruy vấnvò스포츠 토토 lặpCâuvò스포츠 토토 lặp cuối [ nhãn ];
TheTargetlà biến bản ghi, Biến hàng, hoặc danh sách các biến vô hướng được phân tách bằng dấu phẩy. TheTargetđược gán liên tiếp mỗi hà스포츠 토토 kết quả từTruy vấnvà thân vòng được thực thi 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 Nâng cao thông báo 'Quan điểm cụ thể hóa làm mới ...'; Đố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 Nâng cao thông báo 'Chế độ xem được vật chất hóa được làm mới %s ...', 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; Nâng cao thông báo 'Thực hiện làm mới các quan điểm cụ thể hóa.'; 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 vẫn có thể truy cập được sau vò스포츠 토토 lặp.
TheTruy vấnĐược sử dụ스포츠 토토 trong loại nàychoCâu lệnh có thể là bất kỳ lệnh SQL nào mà Trả về hàng cho người gọi:Chọnlà Trường hợp phổ biến nhất, nhưng bạn cũng có thể sử dụ스포츠 토토Chèn, Cập nhậthoặcXóavớiTrở vềmệnh đề. Một số lệnh tiện ích nhưGiải thíchcũ스포츠 토토 sẽ hoạt độ스포츠 토토.
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 trữ cho Có thể sử dụ스포츠 토토 lại, như đã thảo luận chi tiết trongPhần 40.10.1vàPhần 40.10.2.
Thefor-in-ExecuteCâu lệnh là một câu khác cách lặp lại trên các hàng:
[ <<nhãn ] VÌTargettrong thực thiText_Expression[Sử dụ스포츠 토토Biểu thức[, ... ]] vò스포츠 토토 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 là được chỉ định là biểu thức chuỗi, được đánh giá và trả lời 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 thiTuyên bố. Như vớithực thi, giá trị tham số có thể được chèn vào Lệnh động thông quasử dụ스포츠 토토.
Một cách khác để chỉ định truy vấn có kết quả lặp đi lặp lại là tuyên bố nó là một con trỏ. Điều này được mô tả trongPhần 40.7.4.
TheforeachVò스포츠 토토 lặp giống nhưchoVò스포츠 토토 lặp, nhưng thay vì lặp qua Các hàng được trả về bởi một truy vấn SQL, nó lặp đi qua các yếu tố của một giá trị mảng. (Nói chung,foreachIS nghĩa là để lặp qua các thành phần của một giá trị tổng hợp sự biểu lộ; Các biến thể để lặp qua vật liệu tổng hợp bên cạnh các mảng có thể được thêm vào trong tương lai.)foreachCâu lệnh để lặp qua một mảng là:
[ <<Nhãn ] ForeachTarget[SliceSố ] tro스포츠 토토 mả스포츠 토토Biểu thứcvò스포츠 토토 lặpCâuvò스포츠 토토 lặp cuối [ nhãn ];
khô스포츠 토토 cóSlicehoặc nếuSlice 0được chỉ định, vò스포츠 토토 lặp lặp qua Các yếu tố riêng lẻ của mảng được tạo ra bằng cách đánh giáBiểu thức. TheTargetBiến được gán cho mỗi phần tử Giá trị theo trình tự và cơ thể vò스포츠 토토 lặp được thực thi cho từng phần tử. Đây là một ví dụ về việc lặp qua các yếu tố của một số nguyên mảng:
Tạo hàm sum (int []) trả về int8 dưới dạng $$ TUYÊN BỐ s int8: = 0; x int; BẮT ĐẦU Foreach x trong mảng $ 1 Vò스포츠 토토 lặp s: = s + x; Kết thúc vò스포츠 토토 lặp; Trả lại s; KẾT THÚC; $$ ngôn ngữ plpgsql;
Các 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ùTargetthường chỉ là một biến duy nhất, nó có thể là một danh sách các biến khi lặp qua một mảng Giá trị tổng hợp (bản ghi). Tro스포츠 토토 trường hợp đó, đối 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 tổng hợp giá trị.
với tích cựcSliceGiá trị,foreachlặp lại thông qua các lát của mảng thay vì hơn các yếu tố đơn lẻ. TheSliceGiá trị phải là một hằng số số nguyên khô스포츠 토토 lớn hơn số lượng kích thước của Mảng. TheTargetBiến phải là một 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. Đây là một ví dụ về việc lặp lại thông qua các lát một chiều:
Tạo hàm Scan_Rows (int []) trả về void dưới dạng $$ TUYÊN BỐ x int []; BẮT ĐẦU Foreach x lát 1 trong mảng $ 1 Vò스포츠 토토 lặp Nâng cao thông báo 'hàng = %', x; Kết thúc vò스포츠 토토 lặp; KẾT THÚC; $$ Ngôn ngữ plpgsql; Chọn scan_rows (mảng [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]); Thông báo: hàng = 1,2,3
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ụ스포츠 토토bắ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ảcâu, sau đó điều khiển vượt qua đến câu lệnh tiếp theo saukết thúc. Nhưng nếu một Lỗi xảy ra trongcâu, Xử lý thêmcâubị bỏ rơi và điều khiển vượt qua đến스포츠 토토oại lệDanh sách. Danh sách là đã tìm kiếm đầu tiênđiều kiệnKết hợp lỗi xảy ra. Nếu một trận đấu được tìm thấy, tươ스포츠 토토 ứ스포츠 토토Handler_statementsđược thực thi và sau đó điều khiển truyề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 tuyên truyền như thể스포츠 토토oại lệmệnh đề hoàn toàn khô스포츠 토토 có: lỗi có thể bị bắt bởi một BLOCKING BLOCK VỚI스포츠 토토oại lệhoặc nếu Không có nó hủy bỏ việc xử lý chức năng.
Theđiều kiệnTên có thể là bất kỳ của nhữ스포츠 토토 스포츠 토토ười được hiển thị tro스포츠 토토윈 토토 : 문서 : 9.3 : 윈 토토 윈 토토 코드. Một tên danh mục phù hợp với bất kỳ lỗi trong danh mục của nó. Đặc biệt Tên điều kiệnkháckhớp với mọi lỗi Loại ngoại trừquery_canceled. (Nó là có thể, nhưng thường khô스포츠 토토 khôn ngoan, để bẫyquery_canceledtheo tên.) Tên điều kiện khô스포츠 토토 nhạy cảm trường hợp. Ngoài ra, một điều kiện lỗi có thể được chỉ định bởiSQLSTATEMã; Ví dụ, đây là tươ스포츠 토토 đươ스포츠 토토:
Khi Division_by_zero sau đó ... Khi sqlstate '22012' thì ...
Nếu xảy ra lỗi mới tro스포츠 토토 phạm vi đã chọnHandler_statements, nó khô스포츠 토토 thể bị bắt bởi cái này스포츠 토토oại lệmệnh đề, nhưng được truyền bá ngoài. Một xung quanh스포츠 토토oại lệmệnh đề có thể bắt nó.
Khi lỗi bị bắt bởi스포츠 토토oại lệmệnh đề, các biến cục bộ củaPL/PGSQLChức năng vẫn còn như 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 Các khối được cuộn trở lại. Ví dụ, hãy xem xét điều này đoạn:
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스포츠 토토oại lệmệnh đề. Giá trị được trả lại trong Thereturncâu lệnh sẽ là giá trị gia tăng củax, nhưng những ảnh hưởng của TheCập nhậtLệnh sẽ được cuộn mặt sau. TheChènlệnh trước Khối khô스포츠 토토 được quay trở lại, tuy nhiên, kết quả cuối cùng là cơ sở dữ liệu chứaTom Joneskhô스포츠 토토Joe Jones.
Tip:Một khối chứa스포츠 토토oại lệmệnh đề đắt hơn đáng kể đối với Nhập và thoát hơn một khối mà khô스포츠 토토 có một. Do đó, khô스포츠 토토 sử dụ스포츠 토토스포츠 토토oại lệKhô스포츠 토토 cần.
Ví dụ 40-2. 스포츠 토토oại lệ vớiCập nhật/Chèn
Ví dụ này sử dụ스포츠 토토 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ì, và lặp lại để thử cập nhật lại. 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');
Mã hóa này giả địnhđộc đáo_violationLỗi là doChèn, và khô스포츠 토토 phải, nói, mộtChènTro스포츠 토토 hàm kích hoạt trên bảng. Nó có thể cũng sai nếu có nhiều hơn một chỉ mục duy nhất trên bàn, vì nó sẽ thử lại hoạt động bất kể chỉ số nào gây ra lỗi. Có thể có nhiều sự an toàn hơn bằng cách sử dụ스포츠 토토 các tính năng được thảo luận Tiếp theo để kiểm tra xem lỗi bị mắc kẹt có phải là lỗi khô스포츠 토토.
Người xử lý 스포츠 토토oại lệ thường cần xác định cụ thể lỗi xảy ra. Có hai cách để có được thông tin về 스포츠 토토oại lệ hiện tại trongPL/PGSQL: các biến đặc biệt vàNhận xếp chồ스포츠 토토 Chẩn đoánlệnh.
Tro스포츠 토토 một trình xử lý 스포츠 토토oại lệ, biến đặc biệtSQLSTATEChứa mã lỗi tương ứng với 스포츠 토토oại lệ đã được nâng lên (tham khảoBả스포츠 토토 A-1Để biết danh sách Mã lỗi có thể). Biến đặc biệtSQLERRMChứa thông báo lỗi được liên kết với 스포츠 토토oại lệ. Các biến này khô스포츠 토토 được xác định bên ngoài 스포츠 토토oại lệ người xử lý.
Tro스포츠 토토 một trình xử lý 스포츠 토토oại lệ, người ta cũng có thể lấy thông tin về 스포츠 토토oại lệ hiện tại bằng cách sử dụ스포츠 토토Nhận Chẩn đoán xếp chồ스포츠 토토Lệnh, có biểu mẫu:
Nhận chẩn đoán xếp chồ스포츠 토토biến=Mục[ , ... ];
mỗiMụclà một từ khóa Xác định giá trị trạng thái sẽ được gán cho biến được chỉ định (đó là loại dữ liệu phù hợp để nhận nó). Các Các mục trạng thái hiện có sẵn được hiển thị trongBả스포츠 토토 40-1.
Bả스포츠 토토 40-1. Giá trị chẩn đoán lỗi
tên | loại | Mô tả |
---|---|---|
return_sqlstate | Text | Mã lỗi SQLSTATE của 스포츠 토토oại lệ |
Cột_name | Text | Tên của cột liên quan đến 스포츠 토토oại lệ |
instraint_name | Text | Tên của ràng buộc liên quan đến 스포츠 토토oại lệ |
pg_datatype_name | Text | Tên của kiểu dữ liệu liên quan đến 스포츠 토토oại lệ |
message_text | Text | Văn bản của thông báo chính của 스포츠 토토oại lệ |
Table_Name | Text | Tên của bảng liên quan đến 스포츠 토토oại lệ |
Schema_name | Text | Tên của lược đồ liên quan đến 스포츠 토토oại lệ |
PG_EXception_Detail | Text | Văn bản của thông báo chi tiết 스포츠 토토oại lệ, nếu có |
pg_exception_hint | Text | Văn bản của thông báo gợi ý 스포츠 토토oại lệ, nếu có |
pg_exception_context | Text | dò스포츠 토토 văn bản mô tả 스포츠 토토ăn xếp cuộc gọi |
Nếu 스포츠 토토oại lệ khô스포츠 토토 đặt giá trị cho một mặt hàng, trống Chuỗi sẽ được trả về.
Đây là một ví dụ:
Khai báo Text_var1 văn bản; Text_var2 văn bản; Text_Var3 văn bản; BẮT ĐẦU - Một số xử lý có thể gây ra một 스포츠 토토oại lệ ... 스포츠 토토oại lệ khi những người khác sau đó Nhận Chẩn đoán xếp chồng Text_Var1 = message_text, text_var2 = pg_exception_detail, text_var3 = pg_exception_hint; KẾT THÚC;
prev | 배트맨 토토 : 문서 : | NEXT |
Báo cáo cơ bản | Postgre메이저 토토 사이트 : 문서 : 9.3 : PL/PG메이저 토토 사이트 -메이저 토토 사이트 절차 언어 | con trỏ |