Tất cả các biến được sử dụng trong một khối phải được khai kèo bóng đá c1 trong phần khai kèo bóng đá c1 của khối. (Các ngoại lệ duy nhất là biến vòng lặp củacho
11707_11842cho
Vòng lặp lặp qua kết quả của con trỏ được tự động khai kèo bóng đá c1 là biến bản ghi.)
PL/PGSQLkèo bóng đá c1 có thể có bất kỳ loại dữ liệu SQL nào, chẳng hạn nhưSố nguyên
, Varchar
vàchar
.
Dưới đây là một số ví dụ về khai kèo bóng đá c1 biến:
Số nguyên user_id;
Cú pháp chung của khai kèo bóng đá c1 biến là:
tên
[hằng số]loại
[đối chiếucollation_name
] [không null] [Mặc định | : = |Biểu thức
];
TheMặc định
mệnh đề, nếu được đưa ra, chỉ định giá trị ban đầu được gán cho kèo bóng đá c1 khi khối được nhập. Nếumặc định
mệnh đề không được đưa ra thì kèo bóng đá c1 được khởi tạo thànhSQLgiá trị null. Thehằng số
Tùy chọn ngăn kèo bóng đá c1 được gán cho sau khi khởi tạo, do đó giá trị của nó sẽ không đổi trong suốt thời lượng của khối. Theđối chiếu
Tùy chọn Chỉ định đối chiếu để sử dụng cho kèo bóng đá c1 (xemPhần 43.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 bóng đá c1 làkhông null
phả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 một kèo bóng đá c1 được đánh giá và gán cho kèo bóng đá c1 mỗi khi khối được nhập (không chỉ một lần mỗi lần gọi chức năng). Vì vậy, ví dụ, gánbây giờ ()
đến một kèo bóng đá c1 của loạidấu thời gian
gây ra kèo bóng đá c1 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;
Sau khi được khai kèo bóng đá c1, giá trị của một biến có thể được sử dụng trong các biểu thức khởi tạo sau này trong cùng một khối, ví dụ:
Khai kèo bóng đá c1
tham số được truyền cho kèo bóng đá c1 chức năng được đặt tên với kèo bóng đá c1 định danh$ 1
, $ 2
, v.v. Tùy chọn, các bí danh có thể được khai kèo bóng đá c1 cho$
Tê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ố.n
Có hai cách để tạo ra một bí danh. Cách ưa thích là đặt tên cho tham số trongTạo chức năng
Lệnh, ví dụ:
Tạo chức năng Sales_Tax (Subtotal Real) Trả về thực như $$
Cách khác là khai kèo bóng đá c1 rõ ràng một bí danh, sử dụng cú pháp khai kèo bóng đá c1
tên
bí 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à $$
Hai ví dụ này không hoàn toàn tương đương. Trong trường hợp đầu tiên,Subtotal
có 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 một nhãn vào khối bên trong,Subtotal
có thể đủ điều kiện với nhãn đó, thay vào đó.)
Một số ví dụ khác:
Tạo chức năng (varchar, integer) trả về số nguyên dưới dạng $$
Khi APL/PGSQLHàm được khai kèo bóng đá c1 với các tham số đầu ra, các tham số đầu ra được đưa ra$
Tên và bí danh tùy chọn theo cách tương tự như kèo bóng đá c1 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
Tạo chức năng Sales_Tax (Subtotal Real, Out Tax Real) là $$
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.
để gọi chức năng vớiout
tham số, bỏ qua (kèo bóng đá c1) tham số đầu ra trong cuộc gọi chức năng:
Chọn Sales_Tax (100.00);
Tham số đầu ra hữu ích nhất khi trả về nhiều giá trị. Một ví dụ tầm thường là:
18172_18394
Như đã thảo luận trongPhần 38.5.4, Điều này tạo ra một loại bản ghi ẩn danh cho kết quả của chức năng. Nếu areturn
mệnh đề được đưa ra, nó phải nóireturn bản ghi
.
Điều này cũng hoạt động với kèo bóng đá c1 thủ tục, ví dụ:
Tạo quy trình sum_n_product (x int, y int, out sum int, out prod int) AS $$
Trong một cuộc gọi đến một thủ tục, tất cả kèo bóng đá c1 tham số phải được chỉ định. Đối với kèo bóng đá c1 tham số đầu ra,null
Có thể được chỉ định khi gọi quy trình từ SQL đơn giản:
gọi sum_n_product (2, 4, null, null);
Tuy nhiên, khi gọi thủ tục từPL/PGSQL, thay vào đó bạn nên viết một kèo bóng đá c1 cho bất kỳ tham số đầu ra nào; kèo bóng đá c1 sẽ nhận được kết quả của cuộc gọi.Phần 43.6.3Để biết chi tiết.
Một cách khác để khai kèo bóng đá c1PL/PGSQLHàm là vớiBẢNG TRẢ LẠI
, ví dụ:
Tạo chức năng mở rộng_sales (p_itemno int)
Điều này hoàn toàn tương đương với việc khai kèo bóng đá c1 một hoặc nhiềuout
tham số và chỉ địnhreturn setof
.anypepe
Khi loại trả về của APL/PGSQLHàm được khai kèo bóng đá c1 là loại đa hình (xemPhần 38.2.5), một tham số đặc biệt$ 0
được tạo. 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 bóng đá c1 loại đầu vào thực tế.Phần 43.3.3. $ 0
được khởi tạo thành NULL và có thể được sửa đổi bởi hàm, do đó 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.$ 0
cũng có thể được đưa ra một 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:
21346_21564
có thể thu được hiệu ứng tương tự bằng cách khai kèo bóng đá c1 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$ 0
tham số không được sử dụng; kèo bóng đá c1 tham số đầu ra tự phục vụ cùng một mục đích.
21859_22056
Trong thực tế, có thể hữu ích hơn khi khai kèo bóng đá c1 hàm đa hình bằng cách sử dụngAnyCompitiated
Họ kèo bóng đá c1 loại, để tự động quảng bá kèo bóng đá c1 đối số đầu vào cho một loại chung sẽ xảy ra. Ví dụ:
22334_22509
Với ví dụ này, một 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 bóng đá c1 đầu vào số nguyên thành số. Chức năng sử dụngAnyEuity
sẽ yêu cầu bạn chuyển ba đầu vào cho cùng loại theo cách thủ công.
bí danh
newName
bí danh choOldName
;
Thebí danh
Cú pháp prod quát hơn so với đề xuất trong phần trước: Bạn có thể khai kèo bóng đá c1 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ưmới
hoặccũ
Trong hàm kích hoạt.
ví dụ:
Khai kèo bóng đá c1
kể từbí danh
Tạo hai cách khác nhau để đặt tên cho cùng một đố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.
kèo bóng đá c1
%loại
%loại
Cung cấp loại dữ liệu của một biến hoặc cột bảng. Bạn có thể sử dụng điều này để khai kèo bóng đá c1 các biến sẽ giữ các giá trị cơ sở dữ liệu.user_id
Trong của bạnngười dùng
Bảng. Để khai kèo bóng đá c1 một biến có cùng loại dữ liệu vớiuser.user_id
bạn viết:
user_id users.user_id%type;
bằng cách sử dụng%loại
Bạ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_id
từ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 bóng đá c1 hàm đa hình, vì kèo bóng đá c1 loại dữ liệu cần thiết cho kèo bóng đá c1 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 bóng đá c1 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 bóng đá c1 đối số hoặc trình giữ chỗ của hàm.
tên
Table_Name
%RowType
;tên
composite_type_name
;
Một kèo bóng đá c1 của loại tổng hợp được gọi làhàngkèo bóng đá c1 (hoặcloại hàngkèo bóng đá c1). Một kèo bóng đá c1 như vậy có thể giữ toàn bộ hàng củaChọn
hoặccho
Kết quả truy vấn, miễn là bộ cột truy vấn đó phù hợp với loại được khai kèo bóng đá c1 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 bóng đá c1 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
%RowType
Ký hiệu; Hoặc nó có thể được khai kèo bóng đá c1 bằng cách đặt tên của một loại prod hợp.PostgreSQLCho dù bạn viết%RowType
hoặc không. Nhưng biểu mẫu với%RowType
có khả năng di động hơn.)
tham số cho một hàm có thể là kèo bóng đá c1 loại tổng hợp (hoàn thành kèo bóng đá c1 hàng bảng). Trong trường hợp đó, định danh tương ứng$
sẽ là một biến hàng và kèo bóng đá c1 trường có thể được chọn từ nó, ví dụn
$ 1.USER_ID
.
Đây là một ví dụ về việc sử dụng kèo bóng đá c1 loại prod hợp.Bảng1
vàBảng2
kèo bóng đá c1 bảng hiện có có ít nhất kèo bóng đá c1 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 $$
tên
Record;
Biến bản ghi tương tự như kèo bóng đá c1 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ọn
hoặccho
lệnh. Cấu trúc của kèo bóng đá c1 bản ghi có thể thay đổi mỗi khi nó được gán cho.
Lưu ý rằngRecord
không phải là kiểu dữ liệu thực sự, chỉ có một trình giữ chỗ. Người ta cũng nên nhận ra rằng khi APL/PGSQLHàm được khai kèo bóng đá c1 để trả về loạiRecord
, Đây không hoàn toàn giống với một kèo bóng đá c1 số bản ghi, mặc dù một hàm như vậy có thể sử dụng kèo bóng đá c1 bản ghi để 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 nào chức năng được viết, nhưng đối với một chức năng trả vềRecord
Cấ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 đó một kèo bóng đá c1 bản ghi có thể thay đổi cấu trúc hàng của nó trên đường.
Khi APL/PGSQL29712_29904Phần 24.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 bóng đá c1 đối chiếu ngầm giữa kèo bóng đá c1 đối số) thì tất cả kèo bóng đá c1 tham số có thể lấy được được coi là có sự hợp tác đó ngầm.
30343_30592
lần đầu tiên sử dụngLess_than
sẽ sử dụng đối chiếu chungtext_field_1
vàtext_field_2
Để so sánh, trong khi việc 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ỳ kèo bóng đá c1 cục bộ nào thuộc loại có thể kết hợp. Do đó, chức năng này sẽ không hoạt động khác nếu nó được viết là
31125_31311
Nếu không có tham số của kèo bóng đá c1 loại dữ liệu có kết hợp hoặc không có đối chiếu chung nào có thể được xác định cho chúng, thì kèo bóng đá c1 tham số và biến cục bộ sử dụng đối chiếu mặc định của loại dữ liệu của chúng (thường là đối chiếu mặc định của cơ sở dữ liệu, nhưng có thể khác nhau đối với kèo bóng đá c1 biến của kèo bóng đá c1 loại miền).
31626_31738đối chiếu
Tùy chọn trong khai kèo bóng đá c1 của nó, ví dụ
Khai kèo bóng đá c1
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 bóng đá c1 quy tắc trên.
Tất nhiên, tất nhiên là rõ ràngđối chiếu
kèo bóng đá c1 đ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ụ,
32267_32401
Điều này ghi đè kèo bóng đá c1 đối chiếu được liên kết với kèo bóng đá c1 cột bảng, tham số hoặc kèo bóng đá c1 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.
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Để kèo bóng đá c1 cáo vấn đề tài liệu.