Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

42.3. Khai kèo chấp bóng đá hôm nay

Tất cả các biến được sử dụng trong một khối phải được khai kèo chấp bóng đá hôm nay trong phần khai kèo chấp bóng đá hôm nay của khối. (Các ngoại lệ duy nhất là biến vòng lặp củacho11830_11965choVòng lặp lặp qua kết quả của con trỏ được tự động khai kèo chấp bóng đá hôm nay là biến bản ghi.)

PL/PGSQLBiến có thể có bất kỳ loại dữ liệu SQL nào, chẳng hạn nhưSố nguyên, Varcharchar.

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

Số nguyên user_id;
số lượng số (5);
url varchar;
Tên tablename myrow%RowType;
myfield tablename.columnname%Loại;
Bản ghi AROW;

Cú pháp chung của khai kèo chấp bóng đá hôm nay biến là:

tên[hằng số]loại[đối chiếucollation_name ] [không null] [Mặc định | : = | =Biểu thức ];

The13019_13028mệnh đề, nếu được đưa ra, chỉ định giá trị ban đầu được gán cho biến khi khối được nhập. Nếumặc địnhmệnh đề không được đưa ra thì biến được khởi tạo thànhSQLgiá trị null. Thehằng số13328_13479đối chiếuTùy chọn Chỉ định đối chiếu để sử dụng cho biến (xemPhần 42.3.6). Nếu nhưkhông nullđược chỉ định, gán giá trị null dẫn đến lỗi thời gian chạy. Tất cả các biến được khai kèo chấp bóng đá hôm nay làkhông nullphải có giá trị mặc định không phải được chỉ định. Bình đẳng (=) có thể được sử dụng thay vì tuân thủ PL/SQL: =.

Giá trị mặc định của kèo chấp bóng đá hôm nay biến được đánh giá và gán cho biến mỗi khi khối được nhập (không chỉ kèo chấp bóng đá hôm nay lần mỗi lần gọi chức năng). Vì vậy, ví dụ, gánbây giờ ()đến kèo chấp bóng đá hôm nay biến của loạidấu thời giangây ra biến có thời gian gọi hàm hiện tại, không phải thời gian khi hàm được biên dịch trước.

Ví dụ:

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

42.3.1. Khai kèo chấp bóng đá hôm nay tham số chức năng

tham số được truyền cho kèo chấp bóng đá hôm nay chức năng được đặt tên với kèo chấp bóng đá hôm nay định danh$ 1, $ 2, v.v. Tùy chọn, các bí danh có thể được khai kèo chấp bóng đá hôm nay cho$nTên tham số để tăng khả năng đọc. Bí danh hoặc định danh số sau đó có thể được sử dụng để tham khảo giá trị tham số.

Có hai cách để tạo bí danh. Cách ưa thích là đặt tên cho tham số trongTạo chức năngLệnh, ví dụ:

Tạo chức năng Sales_Tax (Subtotal Real) Trả về thực là $$
BẮT ĐẦU
    Trả lại phụ * 0,06;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Cách khác là khai kèo chấp bóng đá hôm nay rõ ràng một bí danh, sử dụng cú pháp khai kèo chấp bóng đá hôm nay

tênbí danh cho $n;

Ví dụ tương tự trong kiểu này trông giống như:

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;

Lưu ý

Hai ví dụ này không hoàn toàn tương đương. Trong trường hợp đầu tiên,Subtotalcó thể được tham chiếu làsales_tax.subtotal, nhưng trong trường hợp thứ hai thì không thể. (Chúng tôi đã gắn kèo chấp bóng đá hôm nay nhãn vào khối bên trong,Subtotalcó thể đủ điều kiện với nhãn đó, thay vào đó.)

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

16514_16890

Khi APL/PGSQLHàm được khai kèo chấp bóng đá hôm nay với các tham số đầu ra, các tham số đầu ra được đưa ra$ntên và bí danh tùy chọn theo cách tương tự như kèo chấp bóng đá hôm nay tham số đầu vào thông thường. Một tham số đầu ra thực sự là một biến bắt đầu null; Nó nên được gán cho trong quá trình thực hiện chức năng. Giá trị cuối cùng của tham số là những gì được trả về. Chẳng hạn, ví dụ về thuế bán hàng cũng có thể được thực hiện theo cách này:

Tạo chức năng Sales_Tax (Subtotal Real, Out Tax Real) là $$
BẮT ĐẦU
    Thuế: = Subtotal * 0,06;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Lưu ý rằng chúng tôi đã bỏ quaTrả về Real- Chúng tôi có thể đã bao gồm nó, nhưng nó sẽ là dự phòng.

Tham số đầu ra hữu ích nhất khi trả về nhiều giá trị. kèo chấp bóng đá hôm nay ví dụ tầm thường là:

17860_18009

Như đã thảo luận trongPhần 37.5.4, Điều này tạo ra kèo chấp bóng đá hôm nay loại bản ghi ẩn danh cho kết quả của chức năng. Nếu areturnmệnh đề được đưa ra, nó phải nóireturn Record.

Một cách khác để khai kèo chấp bóng đá hôm nayPL/PGSQLHàm là vớiBẢNG TRẢ LẠI, ví dụ:

18564_18810

Điều này hoàn toàn tương đương với việc khai kèo chấp bóng đá hôm nay một hoặc nhiềuouttham số và chỉ địnhreturn setofSOMEYPE.

Khi loại trả về của APL/PGSQLHàm được khai kèo chấp bóng đá hôm nay là loại đa hình (xemPhần 37.2.5), kèo chấp bóng đá hôm nay tham số đặc biệt$ 0được tạo ra. Kiểu dữ liệu của nó là loại trả về thực tế của hàm, như được suy ra từ kèo chấp bóng đá hôm nay loại đầu vào thực tế. Điều này cho phép chức năng truy cập loại trả về thực tế của nó như trongPhần 42.3.3. $ 0được khởi tạo thành NULL và có thể được sửa đổi bởi hàm, do đó nó có thể được sử dụng để giữ giá trị trả về nếu muốn, mặc dù điều đó không cần thiết.$ 0cũng có thể được đưa ra kèo chấp bóng đá hôm nay bí danh. Ví dụ: chức năng này hoạt động trên bất kỳ loại dữ liệu nào có+Nhà điều hành:

20031_20249

Có thể thu được hiệu ứng tương tự bằng cách khai kèo chấp bóng đá hôm nay một hoặc nhiều tham số đầu ra là các loại đa hình. Trong trường hợp này là đặc biệt$ 0tham số không được sử dụng; kèo chấp bóng đá hôm nay tham số đầu ra tự phục vụ cùng một mục đích. Ví dụ:

20544_20741

Trong thực tế, có thể hữu ích hơn khi khai kèo chấp bóng đá hôm nay hàm đa hình bằng cách sử dụngAnyCompitiatedHọ kèo chấp bóng đá hôm nay loại, để tự động quảng bá kèo chấp bóng đá hôm nay đối số đầu vào cho một loại chung sẽ xảy ra. Ví dụ:

21019_21194

Với ví dụ này, kèo chấp bóng đá hôm nay cuộc gọi như

Chọn add_three_values ​​(1, 2, 4.7);

sẽ hoạt động, tự động quảng bá kèo chấp bóng đá hôm nay đầu vào số nguyên thành số. Chức năng sử dụngAnyEuitysẽ yêu cầu bạn chuyển ba đầu vào cho cùng loại theo cách thủ công.

42.3.2.bí danh

newNamebí danh choOldName;

Thebí danhCú pháp tổng quát hơn so với đề xuất trong phần trước: Bạn có thể khai kèo chấp bóng đá hôm nay bí danh cho bất kỳ biến nào, không chỉ các tham số chức năng. Việc sử dụng thực tế chính cho điều này là gán một tên khác cho các biến có tên được xác định trước, chẳng hạn nhưnewhoặcTrong hàm kích hoạt.

Ví dụ:

Khai kèo chấp bóng đá hôm nay
  bí danh trước cho cũ;
  Cập nhật bí danh cho Mới;

kể từbí danhTạo hai cách khác nhau để đặt tên cho cùng kèo chấp bóng đá hôm nay đối tượng, việc sử dụng không giới hạn có thể gây nhầm lẫn. Tốt nhất là chỉ sử dụng nó cho mục đích ghi đè tên được xác định trước.

42.3.3. Sao chép kèo chấp bóng đá hôm nay loại

Biến%loại

%loại22976_23150user_idTrong của bạnNgười dùngBảng. Để khai kèo chấp bóng đá hôm nay một biến có cùng loại dữ liệu vớiusers.user_idbạn viết:

user_id users.user_id%type;

bằng cách sử dụng%loạiBạn không cần biết loại dữ liệu của cấu trúc bạn đang tham khảo và quan trọng nhất là loại dữ liệu của mục được tham chiếu thay đổi trong tương lai (ví dụ: bạn thay đổi loạiuser_idtừSố nguyênđếnReal), bạn có thể không cần thay đổi định nghĩa chức năng của mình.

%loạiđặc biệt có giá trị trong kèo chấp bóng đá hôm nay hàm đa hình, vì kèo chấp bóng đá hôm nay loại dữ liệu cần thiết cho kèo chấp bóng đá hôm nay biến nội bộ có thể thay đổi từ cuộc gọi này sang cuộc gọi tiếp theo. kèo chấp bóng đá hôm nay biến thích hợp có thể được tạo bằng cách áp dụng%loạiĐối với kèo chấp bóng đá hôm nay đối số hoặc trình giữ chỗ của hàm.

42.3.4. Loại hàng

tên Table_Name%RowType;tên composite_type_name24638_24642

kèo chấp bóng đá hôm nay biến của loại tổng hợp được gọi làhàngbiến (hoặcloại hàngBiến). kèo chấp bóng đá hôm nay biến như vậy có thể giữ toàn bộ hàng củaChọnhoặcchoKết quả truy vấn, miễn là cột của truy vấn đó phù hợp với loại được khai kèo chấp bóng đá hôm nay của biến. Các trường riêng lẻ của giá trị hàng được truy cập bằng cách sử dụng ký hiệu dấu chấm thông thường, ví dụRowvar.field.

Một biến hàng có thể được khai kèo chấp bóng đá hôm nay có cùng loại với các hàng của bảng hoặc chế độ xem hiện có, bằng cách sử dụngTable_Name%RowTypeKý hiệu; Hoặc nó có thể được khai kèo chấp bóng đá hôm nay bằng cách đặt tên của một loại tổng hợp. (Vì mỗi bảng có một loại tổng hợp liên quan của cùng một tên, nó thực sự không quan trọng trongPostgreSQLCho dù bạn viết%RowTypehay không. Nhưng biểu mẫu với%RowTypecó khả năng di động hơn.)

tham số cho một hàm có thể là kèo chấp bóng đá hôm nay loại tổng hợp (hoàn thành kèo chấp bóng đá hôm nay hàng bảng). Trong trường hợp đó, định danh tương ứng$nsẽ là một biến hàng và kèo chấp bóng đá hôm nay trường có thể được chọn từ nó, ví dụ$ 1.USER_ID.

Đây là một ví dụ về việc sử dụng kèo chấp bóng đá hôm nay loại tổng hợp.Bảng1Bảng2kèo chấp bóng đá hôm nay bảng hiện có có ít nhất kèo chấp bóng đá hôm nay trường được đề cập:

Tạo chức năng Merge_Fields (T_Row Bảng1) Trả về văn bản dưới dạng $$
TUYÊN BỐ
    T2_ROW Bảng2%RowType;
BẮT ĐẦU
    Chọn * vào T2_row từ Bảng2 trong đó ...;
    Trả về t_row.f1 || T2_ROW.F3 || t_row.f5 || t2_row.f7;
KẾT THÚC;
$$ Ngôn ngữ plpgsql;

Chọn Merge_fields (t.*) Từ Bảng1 t trong đó ...;

42.3.5. kèo chấp bóng đá hôm nay loại bản ghi

tênRecord;

Biến bản ghi tương tự như kèo chấp bóng đá hôm nay biến loại hàng, nhưng chúng không có cấu trúc được xác định trước. Họ đảm nhận cấu trúc hàng thực tế của hàng mà họ được gán trong mộtChọnhoặccholệnh. Cấu trúc của biến bản ghi có thể thay đổi mỗi khi nó được gán cho. Hậu quả của điều này là cho đến khi kèo chấp bóng đá hôm nay biến bản ghi được gán đầu tiên, nó không có cấu trúc phụ và bất kỳ nỗ lực nào để truy cập kèo chấp bóng đá hôm nay trường trong đó sẽ rút ra lỗi thời gian chạy.

Lưu ý rằngRecordkhông phải là kiểu dữ liệu thực sự, chỉ có kèo chấp bóng đá hôm nay trình giữ chỗ. Người ta cũng nên nhận ra rằng khi APL/PGSQL27517_27556Record27586_27832RecordCấu trúc thực tế được xác định khi truy vấn gọi được phân tích cú pháp, trong khi đó kèo chấp bóng đá hôm nay biến bản ghi có thể thay đổi cấu trúc hàng của nó trên đường.

42.3.6. Đối chiếuPL/PGSQLBiến

Khi APL/PGSQL28397_28589Phần 23.2. Nếu một đối chiếu được xác định thành công (nghĩa là, không có xung đột nào của kèo chấp bóng đá hôm nay đối chiếu ngầm giữa kèo chấp bóng đá hôm nay đối số) thì tất cả kèo chấp bóng đá hôm nay tham số có thể lấy được được coi là có sự hợp tác đó ngầm. Điều này sẽ ảnh hưởng đến hành vi của kèo chấp bóng đá hôm nay hoạt động nhạy cảm đối chiếu trong chức năng. Ví dụ, xem xét

29028_29277

lần đầu tiên sử dụngLess_thanSẽ sử dụng đối chiếu chungtext_field_1text_field_2Để so sánh, trong khi việc sử dụng thứ hai sẽ sử dụngCđối chiếu.

29578_29775

29810_29996

30008_30301

30311_3042330443_30452Tùy chọn trong khai kèo chấp bóng đá hôm nay của nó, ví dụ

Khai kèo chấp bóng đá hôm nay
    local_a văn bản đối chiếu "en_us";

Tùy chọn này ghi đè lên đối chiếu nếu không sẽ được cung cấp cho biến theo kèo chấp bóng đá hôm nay quy tắc trên.

Tất nhiên, tất nhiên là rõ ràngđối chiếukèo chấp bóng đá hôm nay điều khoản có thể được viết bên trong một hàm nếu muốn buộc một đối chiếu cụ thể được sử dụng trong một hoạt động cụ thể. Ví dụ,

30952_31086

Điều này ghi đè kèo chấp bóng đá hôm nay đối chiếu được liên kết với kèo chấp bóng đá hôm nay cột, tham số hoặc biến cục bộ được sử dụng trong biểu thức, giống như sẽ xảy ra trong lệnh SQL đơn giản.

Gửi hiệu chỉnh

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