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
9310_9381
Bạn có thể muốn xem cùng cách đọc kèo bóng đá trang chohiện tạiPhiên bản hoặc một trong cách đọc kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

cách đọc kèo bóng đá39.3. Khai báo

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

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

Đây là cách đọc kèo bóng đá số ví dụ về khai báo 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 báo cách đọc kèo bóng đá là:

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

Themặc địnhmệnh đề, nếu được đưa ra, Chỉ định giá trị ban đầu được gán cho cách đọc kèo bóng đá khi Khối được nhập. NếuMặc địnhmệnh đề không được đưa ra thì cách đọc kèo bóng đá được khởi tạo thànhSQLgiá trị null. Thehằng sốTùy chọn ngăn cách đọc kèo bóng đá được gán cho sau khi khởi tạo, do đó giá trị của nó sẽ vẫn còn Không đổi trong thời gian của khối. Theđối chiếuTùy chọn Chỉ định cách đọc kèo bóng đá đối chiếu để sử dụng cho Biến (xemPhần 39.3.6). Nếu nhưkhông nullđược chỉ định, Việc gán giá trị null dẫn đến lỗi thời gian chạy. Tất cả cách đọc kèo bóng đá biến được khai báo làkhông nullPhải có giá trị mặc định không toàn được chỉ định.

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

ví dụ:

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

39.3.1. Khai báo chức năng Tham số

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

Có hai cách để tạo ra cách đọc kèo bóng đá 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ề Real AS $$
BẮT ĐẦU
    Trả lại phụ * 0,06;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Theo cách khác, đó là cách duy nhất có sẵn trướcPostgreSQL8.0, là tuyên bố rõ ràng cách đọc kèo bóng đá bí danh, sử dụng cú pháp khai báo

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 ý:15018_15097Subtotalcó thể được tham chiếu là15190_15210, nhưng trong trường hợp thứ hai nó không thể. (Chúng tôi đã gắn cách đọc kèo bóng đá nhãn vào khối bên trong,Subtotalcó thể đủ điều kiện với nhãn đó, thay vào đó.)

cách đọc kèo bóng đá số ví dụ khác:

Tạo chức năng (Varchar, Integer) Trả về số nguyên dưới dạng $$
TUYÊN BỐ
    Bí danh V_String với giá $ 1;
    Chỉ số bí danh với giá $ 2;
BẮT ĐẦU
    - cách đọc kèo bóng đá số tính toán sử dụng V_String và Index ở đây
KẾT THÚC;
$$ Ngôn ngữ plpgsql;

Tạo chức năng Concat_selected_fields (in_t cách đọc kèo bóng đá số tên) Trả về văn bản dưới dạng $$
BẮT ĐẦU
    Trả lại in_t.f1 || in_t.f3 || in_t.f5 || in_t.f7;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

Khi APL/PGSQLHàm là được khai báo với cách đọc kèo bóng đá tham số đầu ra, cách đọc kèo bóng đá tham số đầu ra là được cho$ntên và bí danh tùy chọn chỉ trong giống như cách đọc kèo bóng đá tham số đầu vào bình thường. Một đầu ra Tham số có hiệu quả 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. cách đọc kèo bóng đá Giá trị cuối cùng của tham số là những gì được trả về. Ví dụ, 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ị. cách đọc kèo bóng đá ví dụ tầm thường là:

16872_17021

Như đã thảo luận trongPhần 35.4.4,, Điều này hiệu quả tạo ra cách đọc kèo bóng đá 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óiTrả về ghi.

cách đọc kèo bóng đá cách khác để khai báo APL/PGSQLchức năng là vớiBẢNG TRẢ LẠI, ví dụ:

Tạo chức năng mở rộng_sales (p_itemno int)
Bảng trả về (số lượng int, tổng số) là $$
BẮT ĐẦU
    Truy vấn trả lại Chọn S.Quantity, S.Quantity * s.price từ Sales AS S
                 Trong đó s.itemno = p_itemno;
KẾT THÚC;
$$ ngôn ngữ plpgsql;

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

Khi loại trả về của APL/PGSQLchức năng được khai báo là cách đọc kèo bóng đá loại đa hình (AnyEuity, AnyArray, AnynonarrayhoặcAnyenum), cách đọc kèo bóng đá tham số đặc biệt$ 0được tạo. Kiểu dữ liệu của nó là thực tế Trả về loại chức năng, như được suy ra từ đầu vào thực tế cách đọc kèo bóng đá loại (xemPhần 35.2.5). Điều này cho phép chức năng truy cập thực tế của nó Trả về loại như thể hiện trongPhần 39.3.3. $ 0được khởi tạo thành NULL và có thể được sửa đổi bởi chức năng, vì vậy nó có thể được sử dụng để giữ giá trị trả về nếu muốn, mặc dù điều đó không bắt buộc.$ 0cũng có thể được đưa ra cách đọc kèo bóng đá bí danh. Vì 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:

19068_19286

19299_19426$ 0tham số không được sử dụng; đầu ra cách đọc kèo bóng đá thông số tự phục vụ cùng một mục đích. Ví dụ:

19585_19782

39.3.2.bí danh

newNamebí danh choOldName;

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

ví dụ:

Khai báo
  bí danh trước cho cũ;
  Cập nhật bí danh cho Mới;

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

39.3.3. Sao chép cách đọc kèo bóng đá loại

cách đọc kèo bóng đá%loại

%loạiCung cấp loại dữ liệu của A biến hoặc cột bảng. Bạn có thể sử dụng điều này để khai báo cách đọc kèo bóng đá biến Điều đó sẽ giữ cách đọc kèo bóng đá giá trị cơ sở dữ liệu. Ví dụ: giả sử bạn có một cột có tênuser_idTrong của bạnNgười dùngBảng. Để khai báo cách đọc kèo bóng đá biến với cùng loại dữ liệu vớiusers.user_id​​bạ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, nếu loại dữ liệu của mục được tham chiếu cách đọc kèo bóng đá 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 bạn.

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

39.3.4. Loại hàng

Tên Table_Name%RowType;tên composite_type_name;

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

23245_23359Table_Name%RowTypeKý hiệu; hoặc nó có thể được tuyên bố bởi Đặt tên của cách đọc kèo bóng đá loại tổng hợp. (Vì mỗi bàn đều có loại tổng hợp liên kết của cùng cách đọc kèo bóng đá tên, nó thực sự Không quan trọng trongPostgreSQLCho dù bạn viết%RowTypehoặc không. Nhưng biểu mẫu với%RowTypelà nhiều hơn cầm tay.)

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

Chỉ cách đọc kèo bóng đá cột do người dùng định nghĩa Trong một biến loại hàng, không phải cách đọc kèo bóng đá cột OID hoặc cách đọc kèo bóng đá cột hệ thống khác (Bởi vì hàng có thể là từ một chế độ xem). cách đọc kèo bóng đá trường của hàng Nhập kế thừa kích thước trường của bảng hoặc độ chính xác cho cách đọc kèo bóng đá loại dữ liệu chẳng hạn nhưchar (n).

Đây là một ví dụ về việc sử dụng cách đọc kèo bóng đá loại tổng hợp.Bảng1Bảng2cách đọc kèo bóng đá bảng hiện có có ít nhất cách đọc kèo bóng đá 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 đó ...;

39.3.5. cách đọc kèo bóng đá loại bản ghi

tênRecord;

Biến bản ghi tương tự như cách đọc kèo bóng đá 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 hàng thực tế cấu trúc của hàng chúng đượ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 cách đọc kèo bóng đá kỷ lục Biến được gán đầu tiên cho, nó không có cấu trúc phụ và bất kỳ Cố gắng truy cập cách đọc kèo bóng đá trường trong đó sẽ vẽ lỗi thời gian chạy.

Lưu ý rằngRecordkhông phải là dữ liệu thực sự Loại, chỉ là cách đọc kèo bóng đá người giữ chỗ. Người ta cũng nên nhận ra rằng khi APL/PGSQLHàm được khai báo để trả về loạiRecord, Điều này không hoàn toàn Khái niệm tương tự như cách đọc kèo bóng đá biến kỷ lục, mặc dù cách đọc kèo bóng đá Chức năng có thể sử dụng cách đọc kèo bóng đá biến hồ sơ để giữ kết quả của nó. TRONG Cả hai trường hợp, cấu trúc hàng thực tế không rõ khi chức năng được viết, nhưng cho cách đọc kèo bóng đá chức năng trả vềRecord26310_26456

39.3.6. Đối chiếuPL/PGSQLcách đọc kèo bóng đá

Khi APL/PGSQLHàm có một hoặc nhiều tham số của cách đọc kèo bóng đá loại dữ liệu có thể đối chiếu được xác định cho từng cuộc gọi chức năng tùy thuộc vào cách đọc kèo bóng đá đối chiếu được gán cho cách đọc kèo bóng đá đối số thực tế, như được mô tả trongPhần 22.2. Nếu một đối chiếu là được xác định thành công (tức là không có xung đột về đối chiếu ngầm giữa cách đọc kèo bóng đá đối số) sau đó tất cả cách đọc kèo bóng đá thông số có thể được coi là có sự đối chiếu đó ngầm. Điều này sẽ ảnh hưởng đến hành vi của cách đọc kèo bóng đá hoạt động nhạy cảm đối chiếu trong chức năng. Vì Ví dụ, xem xét

27351_27600

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 Sử dụng thứ hai sẽ sử dụngCĐối chiếu.

Hơn nữa, đối chiếu được xác định cũng được coi là đối chiếu của bất kỳ cách đọc kèo bóng đá cục bộ nào thuộc loại có thể có được. Do đó, chức năng này sẽ không hoạt động khác nếu nó được viết là

28153_28339

Nếu không có tham số của cách đọc kèo bóng đá loại dữ liệu có ghép hoặc không đối chiếu phổ biến có thể được xác định cho họ, sau đó cách đọc kèo bóng đá tham số và cách đọc kèo bóng đá biến cục bộ sử dụng đối chiếu mặc định của dữ liệu của họ loại (thường là đối chiếu mặc định của cơ sở dữ liệu, nhưng có thể khác nhau cho cách đọc kèo bóng đá biến của cách đọc kèo bóng đá loại miền).

cách đọc kèo bóng đá biến cục bộ của kiểu dữ liệu có thể có được có thể có cách đọc kèo bóng đá đối chiếu khác nhau liên quan đến nó bằng cách bao gồmđối chiếutùy chọn trong khai báo của nó, cho ví dụ

Khai báo
    local_a văn bản đối chiếu "en_us";

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

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

29335_29469

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