Phiên bản không được hỗ trợ:7.1
Tài kèo chấp bóng đá hôm nay này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo chấp bóng đá hôm nay trang chohiện tạiPhiên bản hoặc kèo chấp bóng đá hôm nay trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

kèo chấp bóng đá hôm nay24.2. Sự miêu tả

24.2.1. Cấu trúc kèo chấp bóng đá hôm nay PL/PGSQL

PL/PGSQL làcấu trúc khốiNgôn ngữ. Tất cả các từ khóa và số nhận dạng có thể được sử dụng trong hỗn hợp trường hợp trên và dưới. kèo chấp bóng đá hôm nay khối được xác định là:

[<< Nhãn]
[khai báoKhai báo]
BẮT ĐẦUcâu lệnhkết thúc;

Có thể có bất kỳ số lượng khối nào trong câu lệnh phần của kèo chấp bóng đá hôm nay khối. Các khối phụ có thể được sử dụng để ẩn các biến từ bên ngoài kèo chấp bóng đá hôm nay khối các câu lệnh.

Các biến được khai báo trong phần khai báo trước kèo chấp bóng đá hôm nay khối được khởi tạo vào các giá trị mặc định của chúng mỗi khi Khối được nhập, không chỉ kèo chấp bóng đá hôm nay lần cho mỗi cuộc gọi chức năng. Vì ví dụ:

Tạo hàm SomerAnc () trả về số nguyên là '
TUYÊN BỐ
   Số nguyên số lượng: = 30;
BẮT ĐẦU
   Nâng cao thông báo '' số lượng ở đây là %'', số lượng;  - Số lượng ở đây là 30
   Số lượng: = 50;
   -
   -Tạo kèo chấp bóng đá hôm nay khối phụ
   -
   TUYÊN BỐ
      Số nguyên số lượng: = 80;
   BẮT ĐẦU
      Nâng cao thông báo '' số lượng ở đây là %'', số lượng;  - Số lượng ở đây là 80
   KẾT THÚC;

   Nâng cao thông báo '' số lượng ở đây là %'', số lượng;  - Số lượng ở đây là 50
KẾT THÚC;
'Ngôn ngữ' plpgsql ';

Điều quan trọng là không nhầm lẫn việc sử dụng bắt đầu/kết thúc cho Nhóm các câu lệnh trong PL/PGSQL với các lệnh cơ sở dữ liệu cho Kiểm soát giao dịch. PL/PGSQL's Begin/End chỉ dành cho nhóm; Họ không bắt đầu hoặc kết thúc kèo chấp bóng đá hôm nay giao dịch. Chức năng và Các thủ tục kích hoạt luôn được thực thi trong kèo chấp bóng đá hôm nay giao dịch được thiết lập bởi kèo chấp bóng đá hôm nay truy vấn bên ngoài --- họ không thể bắt đầu hoặc cam kết Giao dịch, kể từPostgreskhông có giao dịch lồng nhau.

24.2.2. Nhận xét

Có hai loại bình luận trong PL/PGSQL. kèo chấp bóng đá hôm nay dấu gạch ngang--Bắt đầu kèo chấp bóng đá hôm nay nhận xét mở rộng đến kết thúc của dòng. MỘT/*Bắt đầu a Khối bình luận kéo dài đến sự xuất hiện tiếp theo kèo chấp bóng đá hôm nay*/. Nhận xét khối không thể được lồng, nhưng gấp đôi Bình luận Dash có thể được đính kèm vào kèo chấp bóng đá hôm nay bình luận khối và gấp đôi Dash có thể ẩn các dấu phân cách bình luận khối/**/.

24.2.3. Biến và hằng số

Tất cả các biến, hàng và bản ghi được sử dụng trong kèo chấp bóng đá hôm nay khối hoặc nó khối phụ phải được khai báo trong phần khai báo của kèo chấp bóng đá hôm nay khối. Ngoại lệ là biến vòng lặp của vòng lặp cho vòng lặp lặp lại trên kèo chấp bóng đá hôm nay phạm vi của các giá trị số nguyên.

kèo chấp bóng đá hôm nay biến PL/PGSQL có thể có bất kỳ kiểu dữ liệu SQL nào, chẳng hạn nhưSố nguyên, Varcharchar. Tất cả kèo chấp bóng đá hôm nay biến có mặc định Giá trịSQLgiá trị null.

Đây là kèo chấp bóng đá hôm nay số ví dụ về khai báo biến:

Số nguyên user_id;
số lượng (5);
url varchar;

24.2.3.1. Hằng số và kèo chấp bóng đá hôm nay biến có giá trị mặc định

kèo chấp bóng đá hôm nay khai báo có cú pháp sau:

tên[hằng số]loại[không null] [Mặc định | : =giá trị ];

Giá trị của các biến được khai báo là không đổi không thể đã thay đổi. Nếu không được chỉ định NULL, kèo chấp bóng đá hôm nay nhiệm vụ của kèo chấp bóng đá hôm nay null giá trị dẫn đến kèo chấp bóng đá hôm nay lỗi thời gian chạy. Vì giá trị mặc định của Tất cả các biến làSQLNULL giá trị, tất cả kèo chấp bóng đá hôm nay biến được khai báo là không phải null cũng phải có Giá trị mặc định được chỉ định.

Giá trị mặc định được đánh giá mỗi khi hàm là gọi điện. Vì vậy, việc gán 'Bây giờ' đến a Biến thuộc loạidấu thời giangây ra biến để có thời gian kèo chấp bóng đá hôm nay cuộc gọi chức năng thực tế, không Khi hàm được biên dịch trước vào mã byte kèo chấp bóng đá hôm nay nó.

Ví dụ:

Số nguyên số lượng: = 32;
url varchar: = '' http://mysite.com '';
user_id integer hằng số: = 10;

24.2.3.2. Biến Được truyền cho kèo chấp bóng đá hôm nay chức năng

Biến được truyền cho kèo chấp bóng đá hôm nay chức năng được đặt tên với nhận dạng$ 1, $ 2, v.v. (tối đa là 16). kèo chấp bóng đá hôm nay số ví dụ:

Tạo chức năng sales_tax (real) trả về thực là '
TUYÊN BỐ
    Bí danh phụ với $ 1;
BẮT ĐẦU
    trả lại phụ * 0,06;
KẾT THÚC;
'Ngôn ngữ' plpgsql ';

Tạo chức năng (varchar, số nguyên) trả về số nguyên là '
TUYÊN BỐ
    Bí danh V_String với giá $ 1;
    Chỉ số bí danh với giá $ 2;
BẮT ĐẦU
    - kèo chấp bóng đá hôm nay số tính toán ở đây
KẾT THÚC;
'Ngôn ngữ' plpgsql ';

24.2.3.3. Thuộc tính

Sử dụng%loại%RowTypethuộc tính, bạn có thể khai báo các biến với cùng kèo chấp bóng đá hôm nay kiểu dữ liệu hoặc cấu trúc của mục cơ sở dữ liệu khác (ví dụ: trường bảng).

%loại

%loạiCung cấp kiểu dữ liệu của kèo chấp bóng đá hôm nay cột biến hoặc cơ sở dữ liệu. Bạn có thể sử dụng điều này để Khai báo các biến sẽ giữ các giá trị cơ sở dữ liệu. Vì Ví dụ, giả sử bạn có kèo chấp bóng đá hôm nay cột có tênuser_idTrong kèo chấp bóng đá hôm nay bạnNgười dùngBảng. Để khai báo kèo chấp bóng đá hôm nay biến có cùng kiểu dữ liệu như Người dùng bạn làm:

user_id users.user_id%type;

bằng cách sử dụng%loạiBạn không cần để biết kiểu dữ liệu của cấu trúc bạn đang tham chiếu và quan trọng nhất, nếu kiểu dữ liệu của Thay đổi mục được tham chiếu trong tương lai (ví dụ: bạn thay đổi Định nghĩa bảng của bạn về user_id để trở thành kèo chấp bóng đá hôm nay thật), bạn sẽ không cần thay đổi định nghĩa chức năng của bạn.

tên Bảng%RowType;

Khai báo kèo chấp bóng đá hôm nay hàng với cấu trúc của đã cho bàn.Bảngphải là kèo chấp bóng đá hôm nay Bảng hiện tại hoặc tên xem của cơ sở dữ liệu. Các lĩnh vực của hàng được truy cập trong ký hiệu chấm. Tham số đến kèo chấp bóng đá hôm nay hàm có thể là các loại tổng hợp (bảng hoàn chỉnh hàng). Trong trường hợp đó, định danh tương ứng $ n sẽ là kèo chấp bóng đá hôm nay RowType, nhưng nó phải được đặt bí danh Lệnh bí danh được mô tả ở trên.

Chỉ các thuộc tính người dùng của hàng bảng là có thể truy cập trong hàng, không có oid hoặc hệ thống khác thuộc tính (vì hàng có thể là từ kèo chấp bóng đá hôm nay chế độ xem). Các Các trường của RowType kế thừa kích thước trường của bảng hoặc độ chính xác chochar ()vv. dữ liệu kèo chấp bóng đá hôm nay loại.

Khai báo
    người dùng_rec%RowType;
  user_id người dùng%loại;
BẮT ĐẦU
    user_id: = user_rec.user_id;
    ...

Tạo hàm CS_REFRESH_ONE_MV (Integer) Trả về số nguyên là '
   TUYÊN BỐ
        Bí danh chính với giá $ 1;
        TABLE_DATA CS_M vật kèo chấp bóng đá hôm nay hóa_View%RowType;
   BẮT ĐẦU
        Chọn vào Table_Data * từ cs_m vật kèo chấp bóng đá hôm nay hóa_views
               Trong đó sort_key = khóa;

        Nếu không tìm thấy thì
           Tăng ngoại lệ '' View '' || khóa || '' Không tìm thấy '';
           Trả lại 0;
        Kết thúc nếu;

        - Cột MV_NAME của Chế độ xem lưu trữ CS_Materialized_Views
        - Tên.

        BẢNG TABLE.DATA.MV_NAME;
        Chèn vào TABLE_DATA.MV_NAME || '' '' || Table_Data.MV_Query;

        trả lại 1;
kết thúc;
'Ngôn ngữ' plpgsql ';

24.2.3.4. Đổi tên

Sử dụng Đổi tên Bạn có thể thay đổi tên của kèo chấp bóng đá hôm nay biến, bản ghi hoặc hàng. Điều này rất hữu ích nếu mới hoặc cũ nên được tham chiếu bởi tên khác bên trong quy trình kích hoạt.

Cú pháp và ví dụ:

Đổi tênOldNameđếnnewName;

Đổi tên ID thành user_id;
Đổi tên này_var thành That_var;

24.2.4. Biểu thức

Tất cả kèo chấp bóng đá hôm nay biểu thức được sử dụng trong kèo chấp bóng đá hôm nay câu lệnh PL/PGSQL được xử lý sử dụng người thực thi phụ trợ. Biểu thức xuất hiện Trên thực tế, chứa hằng số có thể yêu cầu đánh giá thời gian chạy (ví dụ:'bây giờ'chodấu thời gianloại) vì vậy không thể Trình phân tích cú pháp PL/PGSQL để xác định các giá trị không đổi thực Từ khóa null. Tất cả các biểu thức được đánh giá nội bộ bằng cách thực hiện kèo chấp bóng đá hôm nay truy vấn

ChọnBiểu thức
Sử dụngSPITrình quản lý. Trong Biểu thức, sự xuất hiện của các định danh biến được thay thế bởi tham số và các giá trị thực từ các biến được truyền đến Người thực thi trong mảng tham số. Tất cả các biểu thức được sử dụng trong kèo chấp bóng đá hôm nay Hàm PL/PGSQL chỉ được chuẩn bị và lưu kèo chấp bóng đá hôm nay lần. Duy nhất Ngoại lệ cho quy tắc này là kèo chấp bóng đá hôm nay tuyên bố thực thi nếu phân tích cú pháp Truy vấn là cần thiết mỗi khi nó gặp phải.

Loại kiểm tra được thực hiện bởiPostgrestrình phân tích cú pháp chính có kèo chấp bóng đá hôm nay số tác dụng phụ để giải thích các giá trị không đổi. Chi tiết có kèo chấp bóng đá hôm nay Sự khác biệt giữa những gì hai chức năng này làm:

Tạo hàm logfunc1 (văn bản) Trả về dấu thời gian là '
    TUYÊN BỐ
        Bí danh logtxt với giá $ 1;
    BẮT ĐẦU
        Chèn vào kèo chấp bóng đá hôm nay giá trị logtable (logtxt, '' now '');
        Trả lại '' bây giờ '';
    KẾT THÚC;
'Ngôn ngữ' plpgsql ';
Tạo hàm logfunc2 (văn bản) Trả về dấu thời gian là '
    TUYÊN BỐ
        Bí danh logtxt với giá $ 1;
        Dấu thời gian Curtime;
    BẮT ĐẦU
        Curtime: = '' Bây giờ '';
        Chèn vào kèo chấp bóng đá hôm nay giá trị logtable (logtxt, curtime);
        Trả lại thời gian;
    KẾT THÚC;
'Ngôn ngữ' plpgsql ';
Trong trường hợplogfunc1 (), ThePostgrestrình phân tích cú pháp chính biết khi nào Chuẩn bị kế hoạch cho phần chèn, rằng chuỗi'bây giờ'nên được hiểu làTimestampVì trường mục tiêu của logtable là của loại đó. Do đó, nó sẽ tạo ra kèo chấp bóng đá hôm nay hằng số từ nó vào lúc này và Giá trị không đổi này sau đó được sử dụng trong tất cả các yêu cầu củalogfunc1 ()Trong suốt vòng đời kèo chấp bóng đá hôm nay phụ trợ. Không cần phải nói rằng đây không phải là những gì mà lập trình viên muốn.

Trong trường hợplogfunc2 (), ThePostgresTrình phân tích cú pháp chính không Biết loại nào'bây giờ'nên trở thành và Do đó, nó trả về kèo chấp bóng đá hôm nay loại dữ liệu củaTextChứa chuỗi'bây giờ'. Trong lúc Nhiệm vụ cho biến số biến cục bộ, PL/PGSQL Người phiên dịch chuyển chuỗi này vào loại dấu thời gian bằng cách gọi Thetext_out ()Timestamp_in ()Hàm cho Chuyển đổi.

Loại kiểm tra này được thực hiện bởiPostgrestrình phân tích cú pháp chính đã được triển khai sau khi PL/PGSQL gần như đã hoàn thành. Đó là kèo chấp bóng đá hôm nay sự khác biệt giữa 6,3 và 6.4 và ảnh hưởng đến tất cả các chức năng bằng tính năng kế hoạch đã chuẩn bị củaSPITrình quản lý. Sử dụng kèo chấp bóng đá hôm nay địa phương biến theo cách trên hiện là cách duy nhất trong PL/PGSQL để có được các giá trị đó được giải thích chính xác.

Nếu các trường bản ghi được sử dụng trong các biểu thức hoặc câu lệnh, Các loại dữ liệu của các trường không nên thay đổi giữa các cuộc gọi của kèo chấp bóng đá hôm nay và biểu thức tương tự. Hãy ghi nhớ điều này khi viết kích hoạt Các thủ tục xử lý các sự kiện cho nhiều hơn kèo chấp bóng đá hôm nay bảng.

24.2.5. Câu lệnh

Bất cứ điều gì không được trình phân tích cú pháp PL/PGSQL hiểu Dưới đây sẽ được đưa vào truy vấn và gửi xuống cơ sở dữ kèo chấp bóng đá hôm nay động cơ để thực hiện. Truy vấn kết quả không nên trả lại bất kỳ dữ kèo chấp bóng đá hôm nay.

24.2.5.1. Phân công

kèo chấp bóng đá hôm nay gán giá trị cho kèo chấp bóng đá hôm nay biến hoặc trường hàng/bản ghi được viết là:

định danh: =Biểu thức;
Nếu kiểu dữ kèo chấp bóng đá hôm nay kết quả biểu thức không khớp với Kiểu dữ kèo chấp bóng đá hôm nay biến hoặc biến có kích thước/độ chính xác được biết (như chochar (20)), Giá trị kết quả sẽ được trình thông dịch mã byte PL/PGSQL sử dụng kèo chấp bóng đá hôm nay cách ngầm Sử dụng các loại kết quả đầu ra- và loại biến ĐẦU TIÊN ĐẦU TIÊN. Lưu ý rằng điều này có khả năng có thể dẫn đến thời gian chạy Các lỗi được tạo bởi các loại chức năng đầu vào.
user_id: = 20;
Thuế: = Subtotal * 0,06;

24.2.5.2. Gọi chức năng khác

Tất cả kèo chấp bóng đá hôm nay chức năng được xác định trong APostgresCơ sở dữ liệu trả về kèo chấp bóng đá hôm nay giá trị. Như vậy, Cách bình thường để gọi chức năng là thực thi chọn truy vấn hoặc thực hiện kèo chấp bóng đá hôm nay bài tập (dẫn đến PL/PGSQL Chọn nội bộ).

Nhưng có những trường hợp ai đó không quan tâm đến kết quả kèo chấp bóng đá hôm nay chức năng. Trong những trường hợp này, hãy sử dụng biểu diễn tuyên bố.

thực hiệnTruy vấn
Điều này thực thi AChọnTruy vấntrênTrình quản lý SPIvà loại bỏ kết quả. Số nhận dạng như kèo chấp bóng đá hôm nay biến cục bộ vẫn được thay thế thành tham số.
thực hiện created_mv ('' cs_session_page_requests_mv '', ''
     chọn session_id, page_id, đếm (*) là n_hits,
              sum (dwell_time) là dwell_time, đếm (dwell_time) là dwell_count
     từ CS_FACT_TABLE
     nhóm theo session_id, page_id '');

24.2.5.3. Thực hiện kèo chấp bóng đá hôm nay truy vấn động

Thường thì bạn sẽ muốn tạo kèo chấp bóng đá hôm nay truy vấn động Bên trong kèo chấp bóng đá hôm nay chức năng PL/PGSQL của bạn. Hoặc bạn có kèo chấp bóng đá hôm nay chức năng sẽ tạo ra kèo chấp bóng đá hôm nay chức năng khác. PL/PGSQL cung cấp thực thi tuyên bố cho những dịp này.

thực thichuỗi truy vấn
WHEREchuỗi truy vấnlà a Chuỗi loạiTextchứaTruy vấnsẽ được thực thi.

Khi làm việc với các truy vấn động, bạn sẽ phải đối mặt thoát khỏi các trích dẫn đơn trong PL/PGSQL. Vui lòng tham khảo Bảng có sẵn tại chương "chuyển từ Oracle PL/SQL" để được giải thích chi tiết sẽ giúp bạn tiết kiệm kèo chấp bóng đá hôm nay số cố gắng.

Không giống như tất cả kèo chấp bóng đá hôm nay truy vấn khác trong PL/PGSQL, ATruy vấnChạy bởi kèo chấp bóng đá hôm nay câu lệnh thực thi là không chuẩn bị và lưu chỉ kèo chấp bóng đá hôm nay lần trong suốt cuộc đời của máy chủ. Thay vào đó,Truy vấnIS Chuẩn bị mỗi lần tuyên bố được chạy. TheTruy vấn chuỗiCó thể được tạo động Trong quy trình thực hiện kèo chấp bóng đá hôm nay hành động trên kèo chấp bóng đá hôm nay bảng biến và kèo chấp bóng đá hôm nay trường.

Kết quả từ các truy vấn được chọn bị loại bỏ bởi thực thi, và chọn vào hiện không được hỗ trợ trong thực thi. Vì vậy, cách duy nhất để trích xuất kèo chấp bóng đá hôm nay kết quả từ kèo chấp bóng đá hôm nay Chọn được tạo tự động là sử dụng cho ... thực thi biểu mẫu được mô tả sau.

kèo chấp bóng đá hôm nay ví dụ:

Thực thi '' Cập nhật bộ TBL ''
        || QUOTE_IDENT (FieldName)
        || '' = ''
        || quote_literal (newValue)
        || '' Ở ĐÂU ...'';

Ví dụ này hiển thị việc sử dụng kèo chấp bóng đá hôm nay chức năngquote_ident(Text) vàquote_literal(Text). kèo chấp bóng đá hôm nay biến chứa trường và bảng số nhận dạng phải được chuyển đến chức năngquote_ident (). kèo chấp bóng đá hôm nay biến chứa theo nghĩa đen kèo chấp bóng đá hôm nay phần tử của chuỗi truy vấn động phải được chuyển sangquote_literal (). Cả hai đều lấy Các bước thích hợp để trả về văn bản đầu vào được đặt trong kèo chấp bóng đá hôm nay lần hoặc trích dẫn kép và với bất kỳ đặc biệt nhúng ký tự.

Đây là kèo chấp bóng đá hôm nay ví dụ lớn hơn nhiều về truy vấn động và Thực thi:

Tạo hàm CS_UPDATE_REFERRER_TYPE_PROC () Trả về số nguyên là '
TUYÊN BỐ
    Giới thiệu_Keys Record;  - khai báo kèo chấp bóng đá hôm nay bản ghi chung sẽ được sử dụng trong
    A_output varchar (4000);
BẮT ĐẦU 
    a_output: = '' Tạo chức năng CS_FIND_REFERRER_TYPE (VARCHAR, VARCHAR, VARCHAR) 
                  Trả về varchar là '' '' 
                     TUYÊN BỐ 
                         bí danh V_host với giá $ 1; 
                         bí danh V_Domain với giá $ 2; 
                         bí danh V_URL với giá 3 đô la; ''; 

    - 
    - Lưu ý cách chúng tôi quét qua kết quả của kèo chấp bóng đá hôm nay truy vấn trong kèo chấp bóng đá hôm nay vòng lặp
    - Sử dụng cấu trúc for <record.
    -

    Đối với người giới thiệu_keys trong Chọn * từ CS_Referrer_Keys Order bằng cách lặp lại
        a_output: = a_output || '' Nếu v_ '' || Giới thiệu_KEYS.KIND || '' giống '''''''''' 
                 || Giới thiệu_KEYS.KEY_STRING || '' '' '' '' '' '' 
                 || giới thiệu_keys.referrer_type || '' '' '' '; kết thúc nếu; ''; 
    Kết thúc vòng lặp; 

    a_output: = a_output || '' Trả lại null; kết thúc; '' '' Ngôn ngữ '' '' plpgsql '' '' ';' '; 

    - Điều này hoạt động bởi vì chúng tôi không thay thế bất kỳ biến nào
    - nếu không nó sẽ thất bại. Nhìn vào thực hiện cho kèo chấp bóng đá hôm nay cách khác để chạy các chức năng

    Thực thi a_output; 
kết thúc; 
'Ngôn ngữ' plpgsql ';

24.2.5.4. Có được sự khác Trạng thái kết quả

Nhận chẩn đoánBiến=Mục[, ...]
Lệnh này cho phép truy xuất kèo chấp bóng đá hôm nay chỉ báo trạng thái hệ thống. Mỗimụclà kèo chấp bóng đá hôm nay từ khóa xác định giá trị trạng thái được gán cho biến được chỉ định (mà nên thuộc kiểu dữ liệu phù hợp để nhận nó). Hiện tại Các mục trạng thái có sẵn làROW_COUNT, The Số lượng hàng được xử lý bởi cuối cùngSQLTruy vấn gửi xuốngSQLĐộng cơ; Vàresult_oid,, oid kèo chấp bóng đá hôm nay hàng cuối cùng được chèn bởi gần đây nhấtSQLTruy vấn. Lưu ý rằngresult_oidchỉ hữu ích sau khi chèn Truy vấn.

24.2.5.5. Trở về từ a chức năng

returnBiểu thức
Hàm chấm dứt và giá trị kèo chấp bóng đá hôm nayBiểu thứcsẽ được đưa trở lại phần trên người thực thi. Giá trị trả về của kèo chấp bóng đá hôm nay hàm không 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 Không cần nhấn câu lệnh trả về, lỗi thời gian chạy sẽ xảy ra.

Kết quả biểu thức sẽ tự động được đưa vào loại trả về của chức năng như được mô tả cho kèo chấp bóng đá hôm nay bài tập.

24.2.6. Điều khiển Cấu trúc

Cấu trúc điều khiển có lẽ là hữu ích nhất (và quan trọng) kèo chấp bóng đá hôm nay phần của PL/SQL. Với các cấu trúc điều khiển của PL/PGSQL, Bạn có thể thao túngPostgreSQLDữ kèo chấp bóng đá hôm nay theo cách rất linh hoạt và mạnh mẽ.

24.2.6.1. Có điều kiện Kiểm soát: Nếu câu lệnh

nếuCâu nói cho phép bạn lấy hành động theo các điều kiện nhất định. PL/PGSQL có ba Các hình thức của if: if-then, if-then-else, if-then-else if. GHI CHÚ: Tất cả PL/PGSQL nếu các câu lệnh cần kèo chấp bóng đá hôm nay tương ứngkết thúc nếuTuyên bố. Trong các tuyên bố khác-nếu bạn cần hai: kèo chấp bóng đá hôm nay cho cái đầu tiên nếu và kèo chấp bóng đá hôm nay cho cái thứ hai (khác NẾU NHƯ).

if-then

IF-SEN là hình thức đơn giản nhất của IF. kèo chấp bóng đá hôm nay tuyên bố giữa lúc đó và cuối nếu sẽ được thực thi Nếu điều kiện là đúng. Nếu không, kèo chấp bóng đá hôm nay tuyên bố kết thúc sau nếu sẽ được thực thi.

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;
if-then-else

28402_28566

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 thì 
    Chèn vào kèo chấp bóng đá hôm nay giá trị user_count (đếm) (v_count);
    trả về '' t '';
KHÁC 
    trả về '' f '';
Kết thúc nếu;

Nếu câu lệnh có thể được lồng và theo sau ví dụ:

Nếu demo_row.sex = '' M '' thì
  đẹ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;
if-then-else if

Khi bạn sử dụng câu lệnh "khác if", bạn là thực sự làm tổ kèo chấp bóng đá hôm nay câu tuyên bố IF bên trong cái khác tuyên bố. Do đó bạn cần kèo chấp bóng đá hôm nay kết thúc nếu câu lệnh cho mỗi lồng nhau nếu và kèo chấp bóng đá hôm nay cho cha mẹ if-else.

Ví dụ:

Nếu demo_row.sex = '' M '' thì
   đẹ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;

24.2.6.2. Điều khiển lặp: Vòng lặp, while, for và thoát

Với vòng lặp, trong khi, cho và thoát kèo chấp bóng đá hôm nay câu lệnh, bạn có thể Kiểm soát luồng thực thi chương trình PL/PGSQL của bạn lặp đi lặp lại.

Vòng lặp
[<< Nhãn]
Vòng lặpCâuvòng lặp kết thúc;
kèo chấp bóng đá hôm nay vòng lặp vô điều kiện phải được chấm dứt rõ ràng bởi kèo chấp bóng đá hôm nay tuyên bố thoát. Nhãn tùy chọn có thể được sử dụng bằng cách thoát Báo cáo của các vòng lặp lồng nhau để xác định mức độ làm tổ nên bị chấm dứt.
Thoát
Thoát [ nhãn ] [KhiBiểu thức ];
nếu khôngnhãnđược đưa ra, The Vòng lặp trong cùng được chấm dứt và tuyên bố sau vòng lặp cuối được thực hiện tiếp theo. Nếu nhưnhãnIS đưa ra, nó phải là nhãn của hiện tại hoặc cấp trên của Khối vòng lặp lồng nhau. Sau đó, vòng 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 kèo chấp bóng đá hôm nay vòng/khối Kết thúc tương ứng.

Ví dụ:

Vòng lặp
    - kèo chấp bóng đá hôm nay số tính toán
    Nếu đếm 0 thì
        RA;  - Vòng lặp thoát
    Kết thúc nếu;
Kết thúc vòng lặp;

Vòng lặp
    - kèo chấp bóng đá hôm nay số tính toán
    Thoát khi đếm 0;
Kết thúc vòng lặp;

BẮT ĐẦU
    - kèo chấp bóng đá hôm nay số tính toán
    Nếu cổ phiếu 100000 thì
        RA;  -- bất hợp pháp. Không thể sử dụng lối ra bên ngoài vòng lặp
    Kết thúc nếu;
KẾT THÚC;
trong khi

Với câu lệnh WHO trình tự kèo chấp bóng đá hôm nay tuyên bố miễn là đánh giá Biểu thức điều kiện là đúng.

[<< Nhãn]
TRONG KHIBiểu thứcVòng lặpCâuvòng lặp kết thúc;
Ví dụ:
Trong khi số lượng_owed 0 và Gift_certicate_balance 0 Loop
    - kèo chấp bóng đá hôm nay số tính toán ở đây
Kết thúc vòng lặp;

Trong khi không boolean_expression vòng lặp
    - kèo chấp bóng đá hôm nay số tính toán ở đây
Vòng lặp cuối;
cho
[<< Nhãn]
VÌtêntrong [đảo ngược]expression..Biểu thứcvòng lặpCâuvòng lặp cuối;
kèo chấp bóng đá hôm nay vòng lặp lặp lại trong kèo chấp bóng đá hôm nay loạt các giá trị số nguyên. Các biếntênđược tự động Được tạo dưới dạng số nguyên loại và chỉ tồn tại bên trong vòng lặp. Hai Biểu thức cho giới hạn dưới và trên kèo chấp bóng đá hôm nay phạm vi là chỉ được đánh giá khi vào vòng lặp. Bước lặp luôn luôn là 1.

kèo chấp bóng đá hôm nay số ví dụ về các vòng lặp (xemPhần 24.2.7Để lặp lại kèo chấp bóng đá hôm nay bản ghi cho vòng lặp):

Đối với tôi trong 1..10 vòng lặp
  - kèo chấp bóng đá hôm nay số biểu thức ở đây

    Nâng cao thông báo 'Tôi là %', tôi;
Kết thúc vòng lặp;

Đối với tôi trong đảo ngược 1..10 vòng lặp
    - kèo chấp bóng đá hôm nay số biểu thức ở đây
Vòng lặp cuối;

24.2.7. Làm việc với Bản ghi

Bản ghi tương tự như hàng, nhưng chúng không có xác định trước kết cấu. Chúng được sử dụng trong các lựa chọn và cho các vòng để giữ kèo chấp bóng đá hôm nay hàng cơ sở dữ liệu thực tế từ kèo chấp bóng đá hôm nay thao tác chọn.

24.2.7.1. Tuyên ngôn

kèo chấp bóng đá hôm nay biến của bản ghi loại có thể được sử dụng cho các khác nhau Lựa chọn. Truy cập kèo chấp bóng đá hôm nay bản ghi hoặc kèo chấp bóng đá hôm nay nỗ lực để gán kèo chấp bóng đá hôm nay giá trị cho kèo chấp bóng đá hôm nay trường bản ghi khi không có hàng thực sự trong đó kết quả trong kèo chấp bóng đá hôm nay lỗi thời gian chạy. Họ có thể được tuyên bố như cái này:

tênRecord;

24.2.7.2. Nhiệm vụ

Bài tập của kèo chấp bóng đá hôm nay lựa chọn hoàn chỉnh vào kèo chấp bóng đá hôm nay bản ghi hoặc hàng có thể được thực hiện bởi:

Chọn vàoTarget Biểu thứctừ ...;
Targetcó thể là kèo chấp bóng đá hôm nay bản ghi, kèo chấp bóng đá hôm nay hàng Biến hoặc danh sách các biến được phân tách bằng dấu phẩy và bản ghi-/trường hàng. Lưu ý rằng điều này khá khác với Giải thích bình thường của Postgres về Chọn vào, đó là Vào Target là kèo chấp bóng đá hôm nay bảng mới được tạo. (Nếu bạn muốn tạo kèo chấp bóng đá hôm nay bảng từ kèo chấp bóng đá hôm nay kết quả chọn bên trong chức năng PL/PGSQL, sử dụng Cú pháp tương đươngTạo bảng khi chọn.)

Nếu kèo chấp bóng đá hôm nay hàng hoặc danh sách biến được sử dụng làm mục tiêu, Các giá trị được chọn phải khớp chính xác với cấu trúc của Mục tiêu hoặc lỗi thời gian chạy xảy ra. Từ khóa có thể là tiếp theo là bất kỳ trình độ chuyên môn, nhóm, sắp xếp hợp lệ, v.v. có thể được đưa ra cho kèo chấp bóng đá hôm nay câu lệnh chọn.

kèo chấp bóng đá hôm nay khi bản ghi hoặc hàng đã được gán cho kèo chấp bóng đá hôm nay bản ghi Biến, bạn có thể sử dụng "." (dot) ký hiệu để truy cập các trường Trong bản ghi đó:

Khai báo
    user_rec bản ghi;
    full_name varchar;
BẮT ĐẦU
    Chọn vào Users_Rec * từ người dùng WHERE user_id = 3;

  FULL_NAME: = USSER_REC.FIRST_NAME || '' '' || users_rec.last_name;

Có kèo chấp bóng đá hôm nay biến đặc biệt có tên là tìm thấy loạiBooleancó thể được sử dụng ngay sau khi Chọn vào để kiểm tra xem kèo chấp bóng đá hôm nay bài tập có thành công không.

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;
Bạn cũng có thể sử dụng các điều kiện IS null (hoặc isnull) để kiểm tra cho sự vô hiệu của kèo chấp bóng đá hôm nay bản ghi/hàng. Nếu lựa chọn trả về nhiều Hàng, chỉ đầu tiên được chuyển vào các trường đích. Tất cả những người khác bị loại bỏ âm thầm.
Khai báo
    user_rec bản ghi;
    full_name varchar;
BẮT ĐẦU
    Chọn vào Users_Rec * từ người dùng WHERE user_id = 3;

    Nếu Users_Rec.Homepage là NULL thì
        - Người dùng không nhập trang chủ, trả lại "http: //"

        trả về '' http: // '';
    Kết thúc nếu;
KẾT THÚC;

24.2.7.3. Lặp lại Thông qua kèo chấp bóng đá hôm nay bản ghi

Sử dụng kèo chấp bóng đá hôm nay loại đặc biệt cho vòng lặp, bạn có thể lặp lại thông qua Kết quả của kèo chấp bóng đá hôm nay truy vấn và thao tác dữ liệu đó cho phù hợp. Cú pháp như sau:

[<< Nhãn]
VÌGhi lại | hàng nganginselect_clausevòng lặpcâuvòng lặp kết thúc;
Bản ghi hoặc hàng được gán tất cả các hàng do Chọn mệnh đề và thân vòng được thực hiện cho mỗi. Đây là kèo chấp bóng đá hôm nay ví dụ:
Tạo hàm CS_REFRESH_MVIEWS () Trả về số nguyên là '
TUYÊN BỐ
     Bản ghi MViews;

     - thay vào đó, nếu bạn đã làm:
     - mViews CS_M vật liệu hóa_View%RowType;
     - Bản ghi này chỉ có thể sử dụng cho bảng CS_M vật liệu_views

BẮT ĐẦU
     Thực hiện cs_log ('' làm mới các chế độ xem được vật chất hóa ... '');

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

         - Bây giờ "mview" có kèo chấp bóng đá hôm nay bản ghi từ cs_m vật liệu hóa_views

         Thực hiện cs_log ('' làm mới chế độ xem được vật chất hóa '' || mview.mv_name || '' ... '' ');
         Bảng cắt ngắn mview.mv_name;
         Chèn vào mview.mv_name || '' '' || mview.mv_query;
     Kết thúc vòng lặp;

     Thực hiện cs_log ('' thực hiện các chế độ xem được làm mới. '');
     trả lại 1;
kết thúc;
'Ngôn ngữ' plpgsql ';
Nếu vòng lặp bị chấm dứt bằng kèo chấp bóng đá hôm nay câu lệnh thoát, thì cuối cùng Hàng được chỉ định vẫn có thể truy cập được sau vòng lặp.

Câu lệnh thực thi For-in là kèo chấp bóng đá hôm nay cách khác để lặp lại Hồ sơ trên:

[<< Nhãn]
VÌGhi lại | hàng ngangtrong thực thitext_expressionvòng lặpCâuvòng lặp kết thúc;
Đây giống như biểu mẫu trước đó, ngoại trừ nguồn chọn nguồn câu lệnh được chỉ định là biểu thức chuỗi, được đánh giá và lên kế hoạch lại trên mỗi mục nhập vào vòng lặp. Điều này cho phép lập trình viên chọn tốc độ của kèo chấp bóng đá hôm nay truy vấn được lên kế hoạch trước hoặc Tính linh hoạt của kèo chấp bóng đá hôm nay truy vấn động, giống như với kèo chấp bóng đá hôm nay thực thi đơn giản tuyên bố.

24.2.8. Hủy bỏ và tin nhắn

Sử dụng câu lệnh RAISE để ném tin nhắn vàoPostgresCơ chế ELOG.

Nângcấp'Định dạng' [, định danh[...]];
Bên trong định dạng,%được sử dụng làm người giữ chỗ cho kèo chấp bóng đá hôm nay định danh phân tách dấu phẩy tiếp theo. kèo chấp bóng đá hôm nay mức có thể được gỡ lỗi (âm thầm bị đàn áp trong sản xuất chạy cơ sở dữ liệu), thông báo (ghi vào nhật ký cơ sở dữ liệu và chuyển tiếp đến ứng dụng khách) và ngoại lệ (được viết vào nhật ký cơ sở dữ liệu và hủy bỏ giao dịch).
Nâng cao thông báo '' Số ID '' || khóa || '' Không tìm thấy! '';
Nâng cao thông báo '' Gọi CS_CREATE_JOB (%) '', V_JOB_ID;
Trong ví dụ cuối cùng này, V_JOB_ID sẽ thay thế % trong sợi dây.
Tăng ngoại lệ '' ID không có - %'', user_id;
Điều này sẽ hủy bỏ giao dịch và ghi vào cơ sở dữ kèo chấp bóng đá hôm nay log.

24.2.9. Ngoại lệ

Postgreskhông có Mô hình xử lý ngoại lệ rất thông minh. Bất cứ khi nào trình phân tích cú pháp, người lập kế hoạch/trình tối ưu hóa hoặc thực thi quyết định rằng kèo chấp bóng đá hôm nay tuyên bố không thể được xử lý lâu hơn, toàn bộ giao dịch bị hủy bỏ và Hệ thống nhảy trở lại vào vòng chính để lấy truy vấn tiếp theo từ ứng dụng máy khách.

Có thể nối vào cơ chế lỗi để chú ý Điều này xảy ra. Nhưng hiện tại không thể nói những gì Thực sự gây ra sự hủy bỏ (lỗi chuyển đổi đầu vào/đầu ra, Lỗi điểm nổi, lỗi phân tích cú pháp). Và có thể là Cơ sở dữ kèo chấp bóng đá hôm nay phụ trợ ở trạng thái không nhất quán vào thời điểm này Quay trở lại người thực thi trên hoặc phát hành nhiều lệnh có thể Tham nhũng toàn bộ cơ sở dữ kèo chấp bóng đá hôm nay. Và ngay cả khi, tại thời điểm này thông tin rằng giao dịch bị hủy bỏ, đã được gửi cho ứng dụng khách, vì vậy hoạt động tiếp tục không thực hiện bất kỳ ý nghĩa nào.

Do đó, điều duy nhất PL/PGSQL hiện đang làm khi nó gặp phải sự hủy bỏ trong khi thực hiện chức năng hoặc kích hoạt Quy trình là viết kèo chấp bóng đá hôm nay số tin nhắn nhật ký mức độ gỡ lỗi bổ sung nói về hàm nào và ở đâu (số dòng và loại tuyên bố) Điều này đã xảy ra.