PostgreSQL12070_12159
Các tỷ lệ kèo bóng đá cơ sở là những tỷ lệ kèo bóng đá, nhưSố nguyên
, được thực hiện dưới mức củaSQLNgôn ngữ (thường bằng ngôn ngữ cấp thấp như C). Chúng thường tương ứng với những gì thường được gọi là các tỷ lệ kèo bóng đá dữ liệu trừu tượng.PostgreSQLChỉ có thể hoạt động trên các tỷ lệ kèo bóng đá đó thông qua các chức năng do người dùng cung cấp và chỉ hiểu hành vi của các tỷ lệ kèo bóng đá đó trong phạm vi mà người dùng mô tả chúng. Các tỷ lệ kèo bóng đá cơ sở tích hợp được mô tả trongChương 8.
13057_13192SQLCác lệnh, không có bất kỳ chương trình cấp thấp nào. Tham khảoPhần 8.7Để biết thêm thông tin.
PostgreSQLCó ba tỷ lệ kèo bóng đáHồicontainerHồiCác tỷ lệ kèo bóng đá, là các tỷ lệ kèo bóng đá chứa nhiều giá trị của các tỷ lệ kèo bóng đá khác. Đây là các mảng, vật liệu tổng hợp và phạm vi.
Mảng có thể chứa nhiều giá trị cùng tỷ lệ kèo bóng đá. Một tỷ lệ kèo bóng đá mảng được tự động tạo cho từng tỷ lệ kèo bóng đá cơ sở, tỷ lệ kèo bóng đá tổng hợp, tỷ lệ kèo bóng đá phạm vi và tỷ lệ kèo bóng đá miền. Nhưng không có mảng mảng. Cho đến nay, hệ thống tỷ lệ kèo bóng đá có liên quan, các mảng đa chiều giống như các mảng một chiều. Tham khảoPhần 8.15Để biết thêm thông tin.
Các tỷ lệ kèo bóng đá tổng hợp hoặc tỷ lệ kèo bóng đá hàng, được tạo bất cứ khi nào người dùng tạo bảng. Nó cũng có thể sử dụngTạo tỷ lệ kèo bóng đáĐể xác định AHồiđộc lậptỷ lệ kèo bóng đá tổng hợp không có bảng liên kết. Một tỷ lệ kèo bóng đá tổng hợp chỉ đơn giản là một danh sách các tỷ lệ kèo bóng đá có tên trường liên quan. Giá trị của tỷ lệ kèo bóng đá tổng hợp là một hàng hoặc bản ghi của các giá trị trường. Tham khảoPhần 8.16Để biết thêm thông tin.
Một tỷ lệ kèo bóng đá phạm vi có thể chứa hai giá trị cùng tỷ lệ kèo bóng đá, là giới hạn dưới và trên của phạm vi. Các tỷ lệ kèo bóng đá phạm vi được tạo ra, mặc dù một vài tỷ lệ kèo bóng đá tích hợp tồn tại. Tham khảoPhần 8.17Để biết thêm thông tin.
15562_15834SQLlệnhTạo tên miền. Tham khảoPhần 8.18Để biết thêm thông tin.
Có một vàiPseudo-TypesHồicho các mục đích đặc biệt. Các tỷ lệ kèo bóng đá giả không thể xuất hiện dưới dạng các cột của các bảng hoặc các thành phần của các tỷ lệ kèo bóng đá container, nhưng chúng có thể được sử dụng để khai báo các tỷ lệ kèo bóng đá đối số và kết quả của các hàm. Điều này cung cấp một cơ chế trong hệ thống tỷ lệ kèo bóng đá để xác định các lớp chức năng đặc biệt.16875_16892Liệt kê các tỷ lệ kèo bóng đá giả hiện có.
Một số tỷ lệ kèo bóng đá giả quan tâm đặc biệt làCác tỷ lệ kèo bóng đá đa hình, được sử dụng để khai báoHàm đa hình. Tính năng mạnh mẽ này cho phép một định nghĩa hàm duy nhất hoạt động trên nhiều tỷ lệ kèo bóng đá dữ liệu khác nhau, với (các) tỷ lệ kèo bóng đá dữ liệu cụ thể được xác định bởi các tỷ lệ kèo bóng đá dữ liệu thực sự được truyền cho nó trong một cuộc gọi cụ thể. Các tỷ lệ kèo bóng đá đa hình được thể hiện trongBảng 36.1. Một số ví dụ về việc sử dụng của chúng xuất hiện trongPhần 36.5.11.
Bảng 36.1. Các tỷ lệ kèo bóng đá đa hình
tên | Gia đình | Mô tả |
---|---|---|
AnyEuity |
đơn giản | Cho biết rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu nào |
AnyArray |
đơn giản | Cho biết rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu mảng nào |
Anynonarray |
19300_19308 | Cho biết rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu không phải nào |
Anyenum |
đơn giản | Cho biết rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu enum nào (xemPhần 8.7) |
Anyrange |
đơn giản | chỉ ra rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu phạm vi nào (xemPhần 8.17) |
Anymultirange |
Đơn giản | Cho biết rằng một hàm chấp nhận bất kỳ tỷ lệ kèo bóng đá dữ liệu đa dạng nào (xemPhần 8.17) |
20373_20388 |
Common | 20447_20566 |
AnycompatiBleArray |
Common | 20721_20846 |
AnycompatiblenonArray |
Common | 21004_21133 |
AnycompatiBlerange |
Common | 21288_21413 |
AnycompatiSlapsultirange |
Common | 21573_21703 |
Các đối số và kết quả đa hình được gắn với nhau và được giải quyết với các tỷ lệ kèo bóng đá dữ liệu cụ thể khi một truy vấn gọi hàm đa hình được phân tích cú pháp. Khi có nhiều hơn một đối số đa hình, các tỷ lệ kèo bóng đá dữ liệu thực tế của các giá trị đầu vào phải khớp với mô tả dưới đây. Nếu tỷ lệ kèo bóng đá kết quả của hàm là đa hình hoặc nó có các tham số đầu ra của các tỷ lệ kèo bóng đá đa hình, các tỷ lệ kèo bóng đá kết quả đó được suy ra từ các tỷ lệ kèo bóng đá thực tế của các đầu vào đa hình như được mô tả dưới đây.
choĐơn giảnhọ các tỷ lệ kèo bóng đá đa hình, các quy tắc phù hợp và suy luận hoạt động như thế này:
Mỗi vị trí (đối số hoặc giá trị trả về) được khai báo làAnyEuity
được phép có bất kỳ tỷ lệ kèo bóng đá dữ liệu thực tế cụ thể nào, nhưng trong bất kỳ cuộc gọi nào, tất cả đều phải làcùngtỷ lệ kèo bóng đá thực tế. Mỗi vị trí được khai báo làAnyArray
22777_22893Anyrange
Tất cả phải là cùng tỷ lệ kèo bóng đá phạm vi. Tương tự như vậy choAnymultirange
.
Hơn nữa, nếu có các vị trí được tuyên bốAnyArray
và những người khác được tuyên bốAnyEuity
, tỷ lệ kèo bóng đá mảng thực tế trongAnyArray
23225_23305AnyEuity
Vị trí.Anynonarray
được đối xử giống hệt nhưAnyEuity
23456_23543Anyenum
được đối xử giống hệt nhưAnyEuity
, nhưng thêm ràng buộc bổ sung rằng tỷ lệ kèo bóng đá thực tế phải là tỷ lệ kèo bóng đá enum.
Tương tự, nếu có các vị trí được khai báoAnyrange
và những người khác được tuyên bốAnyEuity
hoặcAnyArray
, tỷ lệ kèo bóng đá phạm vi thực tế trongAnyrange
Vị trí phải là một phạm vi có kiểu con là cùng tỷ lệ kèo bóng đá xuất hiện trongAnyEuity
Vị trí và giống như tỷ lệ kèo bóng đá phần tử củaAnyArray
Vị trí. Nếu có các vị trí được khai báoAnymultirange
Anyrange
và các phần tử cơ sở phù hợp với các tham số được khai báoAnyEuity
vàAnyArray
.
Do đó, khi có nhiều hơn một vị trí đối số được khai báo với tỷ lệ kèo bóng đá đa hình, hiệu ứng ròng là chỉ được phép kết hợp một số tỷ lệ kèo bóng đá đối số thực tế. Ví dụ: một hàm được khai báo làbằng (AnyEuity, AnyEuity)
sẽ lấy bất kỳ hai giá trị đầu vào nào, miễn là chúng thuộc cùng một tỷ lệ kèo bóng đá dữ liệu.
Khi giá trị trả về của hàm được khai báo là tỷ lệ kèo bóng đá đa hình, phải có ít nhất một vị trí đối số cũng có tính đa hình và tỷ lệ kèo bóng đá dữ liệu thực tế được cung cấp cho các đối số đa hình xác định tỷ lệ kèo bóng đá kết quả thực tế cho cuộc gọi đó. Ví dụ: nếu chưa có cơ chế đăng ký mảng, người ta có thể xác định một hàm thực hiện đăng ký là25258_25307
. Tuyên bố này hạn chế đối số đầu tiên thực tế là một tỷ lệ kèo bóng đá mảng và cho phép trình phân tích cú pháp suy ra tỷ lệ kèo bóng đá kết quả chính xác từ tỷ lệ kèo bóng đá đối số đầu tiên thực tế. Một ví dụ khác là một hàm được khai báo làf (AnyArray) trả về Anyenum
Sẽ chỉ chấp nhận các mảng của các tỷ lệ kèo bóng đá enum.
Trong hầu hết các trường hợp, trình phân tích cú pháp có thể suy ra tỷ lệ kèo bóng đá dữ liệu thực tế cho tỷ lệ kèo bóng đá kết quả đa hình từ các đối số thuộc tỷ lệ kèo bóng đá đa hình khác nhau trong cùng một họ; Ví dụAnyArray
có thể được suy luận từAnyEuity
hoặc ngược lại. Một ngoại lệ là kết quả đa hình của tỷ lệ kèo bóng đáAnyrange
Yêu cầu đối số tỷ lệ kèo bóng đáAnyrange
; nó không thể được suy luận từAnyArray
hoặcAnyEuity
Đối số. Điều này là do có thể có nhiều tỷ lệ kèo bóng đá phạm vi với cùng một tỷ lệ kèo bóng đá phụ.
Lưu ý rằngAnynonarray
vàAnyenum
Không đại diện cho các biến tỷ lệ kèo bóng đá riêng biệt; chúng giống nhưAnyEuity
, chỉ với một ràng buộc bổ sung. Ví dụ: khai báo một hàm làf (AnyEuity, Anyenum)
tương đương với việc khai báo nó làf (Anyenum, Anyenum)
: Cả hai đối số thực tế phải là cùng tỷ lệ kèo bóng đá enum.
choCommonhọ các tỷ lệ kèo bóng đá đa hình, các quy tắc phù hợp và suy luận hoạt động xấp xỉ như đối vớiHồiđơn giảnHồigia đình, với một sự khác biệt lớn: các tỷ lệ kèo bóng đá thực tế của các đối số không cần phải giống hệt nhau, miễn là chúng có thể được sử dụng một cách ngầm định cho một tỷ lệ kèo bóng đá phổ biến. tỷ lệ kèo bóng đá phổ biến được chọn theo các quy tắc tương tự như đối vớiLiên minh
và các cấu trúc liên quan (xemPhần 10.5). Lựa chọn tỷ lệ kèo bóng đá phổ biến xem xét các tỷ lệ kèo bóng đá thực tế củaAnyCompitiated
vàAnycompatiblenonarray
Đầu vào, các tỷ lệ kèo bóng đá phần tử mảng củaAnycompatiBleArray
Đầu vào, các phân nhóm phạm vi củaAnycompatiBlerange
Đầu vào và các kiểu con đa năng của27736_27761
Đầu vào. Nếu nhưAnycompatiblenonArray
Có mặt thì tỷ lệ kèo bóng đá phổ biến được yêu cầu là tỷ lệ kèo bóng đá không phải là một tỷ lệ kèo bóng đá. Khi một tỷ lệ kèo bóng đá chung được xác định, các đối số trongAnyCompitiated
và28004_28027
Vị trí được tự động chuyển theo tỷ lệ kèo bóng đá đó và các đối số trongAnycompatiBleArray
Vị trí được tự động chuyển đến tỷ lệ kèo bóng đá mảng cho tỷ lệ kèo bóng đá đó.
Vì không có cách nào để chọn tỷ lệ kèo bóng đá phạm vi chỉ biết phân nhóm của nó, sử dụngAnycompatiBlerange
và/hoặcAnycompatiSlapsultirange
Yêu cầu tất cả các đối số được khai báo với tỷ lệ kèo bóng đá đó có cùng phạm vi thực tế và/hoặc tỷ lệ kèo bóng đá đa tỷ lệ kèo bóng đá và tỷ lệ kèo bóng đá phụ của tỷ lệ kèo bóng đá đó đồng ý với tỷ lệ kèo bóng đá chung được chọn, để không cần sử dụng các giá trị phạm vi. Như vớiAnyrange
vàAnymultirange
, Sử dụngAnycompatiBlerange
vàAnymultirange
Là tỷ lệ kèo bóng đá kết quả hàm yêu cầu cóAnycompatiBlerange
hoặcAnycompatiSlapsultirange
Đối số.
Lưu ý rằng không cóAnycompatibleEnum
tỷ lệ kèo bóng đá. Một tỷ lệ kèo bóng đá như vậy sẽ không hữu ích lắm, vì thông thường không có bất kỳ diễn viên ngầm nào cho các tỷ lệ kèo bóng đá enum, có nghĩa là sẽ không có cách nào để giải quyết một tỷ lệ kèo bóng đá chung cho các đầu vào enum không giống nhau.
Theđơn giảnHồivàphổ biến”Các họ đa hình đại diện cho hai bộ biến tỷ lệ kèo bóng đá độc lập. Xem xét ví dụ
Tạo chức năng MyFunc (A AnyEuity, B Anyelement, c AnyCompit, D AnyCompiTHER) Trả về mọi thứ tương thích như ...
Trong một cuộc gọi thực tế của chức năng này, hai đầu vào đầu tiên phải có cùng một tỷ lệ kèo bóng đá. Hai đầu vào cuối cùng phải được thúc đẩy thành một tỷ lệ kèo bóng đá chung, nhưng tỷ lệ kèo bóng đá này không cần phải làm gì với tỷ lệ kèo bóng đá của hai đầu vào đầu tiên. Kết quả sẽ có tỷ lệ kèo bóng đá chung của hai đầu vào cuối cùng.
29964_30036Phần 36.5.6) Có thể đa hình: Điều này được thực hiện bằng cách khai báo tham số cuối cùng của nó làVariadic
AnyArray
hoặcVariadic
30405_30425
. Đối với các mục đích của đối số khớp và xác định tỷ lệ kèo bóng đá kết quả thực tế, một hàm như vậy hoạt động giống như khi bạn đã viết số lượng thích hợp củaAnynonarray
hoặcAnycompatiblenonArray
tham số.