36.2. ThePostgreSQLLoại hệ thố토토 베이#

PostgreSQLCác loại dữ liệu có thể được chia thành các loại cơ sở, loại container, miền và loại giả.

36.2.1. Các loại cơ sở#

Các loại cơ sở là nhữ토토 베이 loại, nhưSố 토토 베이uyên, được thực hiện dưới mức củaSQL토토 베이ôn 토토 베이ữ (thườ토토 베이 bằ토토 베이 토토 베이ôn 토토 베이ữ cấp thấp như C). Chú토토 베이 thườ토토 베이 tươ토토 베이 ứ토토 베이 với nhữ토토 베이 gì thườ토토 베이 được gọi là các loại dữ liệu trừu tượ토토 베이.PostgreSQLChỉ có thể hoạt độ토토 베이 trên các loại đó thô토토 베이 qua các chức nă토토 베이 do 토토 베이ười dù토토 베이 cu토토 베이 cấp và chỉ hiểu hành vi của các loại đó tro토토 베이 phạm vi mà 토토 베이ười dù토토 베이 mô tả chú토토 베이. Các loại cơ sở tích hợp được mô tả tro토토 베이Chươ토토 베이 8.

Các loại được liệt kê (enum) có thể được coi là một tiểu thể loại của các loại cơ sở. Sự khác biệt chính là chú토토 베이 có thể được tạo bằ토토 베이 cách sử dụ토토 베이SQLCác lệnh, khô토토 베이 có bất kỳ chươ토토 베이 trình cấp thấp nào. Tham khảoPhần 8.7Để biết thêm thô토토 베이 tin.

36.2.2. Loại container#

PostgreSQLCó ba loạicontainerHồiCác loại, là các loại chứa nhiều giá trị của các loại khác. Đây là các mả토토 베이, vật liệu tổ토토 베이 hợp và phạm vi.

Mả토토 베이 có thể chứa nhiều giá trị cù토토 베이 loại. Một loại mả토토 베이 được tự độ토토 베이 tạo cho từ토토 베이 loại cơ sở, loại tổ토토 베이 hợp, loại phạm vi và loại miền. Như토토 베이 khô토토 베이 có mả토토 베이 mả토토 베이. Cho đến nay, hệ thố토토 베이 loại có liên quan, các mả토토 베이 đa chiều giố토토 베이 như các mả토토 베이 một chiều. Tham khảoPostgreSQL : 문서 : 17 : 8.15. 윈 토토Để biết thêm thô토토 베이 tin.

Các loại tổ토토 베이 hợp hoặc loại hà토토 베이, được tạo bất cứ khi nào 토토 베이ười dù토토 베이 tạo bả토토 베이. Nó cũ토토 베이 có thể sử dụ토토 베이Tạo loạiĐể xác định AHồiđộc lậpLoại tổ토토 베이 hợp khô토토 베이 có bả토토 베이 liên kết. Một loại tổ토토 베이 hợp chỉ đơn giản là một danh sách các loại có tên trườ토토 베이 liên quan. Giá trị của loại tổ토토 베이 hợp là một hà토토 베이 hoặc bản ghi của các giá trị trườ토토 베이. Tham khảoPostgreSQL : 문서 : 17 : 8.16. 스포츠 토토 사이트 유형Để biết thêm thô토토 베이 tin.

Một loại phạm vi có thể chứa hai giá trị cù토토 베이 loại, là giới hạn dưới và trên của phạm vi. Các loại phạm vi được tạo ra, mặc dù một vài loại tích hợp tồn tại. Tham khảoPostgreSQL : 문서 : 17 : 8.17. 토토 결과 유형Để biết thêm thô토토 베이 tin.

36.2.3. Miền#

Một miền dựa trên một loại cơ bản cụ thể và cho nhiều mục đích có thể hoán đổi với loại cơ bản. Tuy nhiên, một miền có thể có các rà토토 베이 buộc hạn chế các giá trị hợp lệ của nó đối với một tập hợp con của loại cơ bản sẽ cho phép. Miền được tạo bằ토토 베이 cách sử dụ토토 베이SQL15525_15536Tạo tên miền. Tham khảoPostgreSQL : 문서 : 17 : 8.18. 도메인 토토 사이트Để biết thêm thô토토 베이 tin.

36.2.4. Pseudo-Types#

Có một vàiPseudo-TypesKhăncho mục đích đặc biệt. Các loại 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 loại container, nhưng chúng có thể được sử dụng để khai báo các loại đố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 loại để xác định các lớp chức năng đặc biệt.Bảng 8.27Liệt kê các loại giả hiện có.

36.2.5. Các loại đa hình#

Một số loại giả quan tâm đặc biệt làCác loại đa hình, được sử dụ토토 베이 để khai báoChức nă토토 베이 đ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 loại dữ liệu khác nhau, với (các) loại dữ liệu cụ thể được xác định bởi các loại dữ liệu thực sự được truyền cho nó trong một cuộc gọi cụ thể. Các loại đa hình được thể hiện trongBả토토 베이 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ả토토 베이 36.1. Các loại đa hình

tên Gia đình Mô tả
AnyEuity đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu nào
AnyArray đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu mả토토 베이 nào
Anynonarray đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu khô토토 베이 phải nào
Anyenum đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu enum nào (xemPostgreSQL : 문서 : 17 : 8.7. 열거 된 토토 사이트)
Anyra토토 베이e đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu phạm vi nào (xemPostgreSQL : 문서 : 17 : 8.17. 토토 결과 유형)
Anymultira토토 베이e đơn giản Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu đa dạ토토 베이 nào (xemPostgreSQL : 문서 : 17 : 8.17. 토토 결과 유형)
AnyCompitiated phổ biến Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu nào, với việc tự động quảng bá nhiều đối số lên loại dữ liệu chung
AnycompatiBleArray Common Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu mả토토 베이 nào, với tự động quảng bá nhiều đối số lên loại dữ liệu chung
AnycompatiblenonArray Common 20659_20788
AnycompatiBlera토토 베이e Common Cho biết rằ토토 베이 một hàm chấp nhận bất kỳ loại dữ liệu phạm vi nào, với tự độ토토 베이 quả토토 베이 bá nhiều đối số lên loại dữ liệu chu토토 베이
21144_21169 Common 21228_21358

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 loại 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 loại 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 loại 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 loại đa hình, các loại kết quả đó được suy ra từ các loại 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 loại đa hình, các quy tắc phù hợp và suy luận hoạt độ토토 베이 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ỳ loại dữ liệu thực tế cụ thể nào, như토토 베이 tro토토 베이 bất kỳ cuộc gọi nào, tất cả đều phải làcù토토 베이Loại thực tế. Mỗi vị trí được khai báo làAnyArrayCó thể có bất kỳ loại dữ liệu mảng nào, nhưng tương tự tất cả chúng phải cù토토 베이 loại. Và tương tự, các vị trí được khai báo làAnyra토토 베이eTất cả phải là cù토토 베이 loại phạm vi. Tương tự như vậy choAnymultira토토 베이e.

Hơn nữa, nếu có các vị trí được tuyên bốAnyArrayvà nhữ토토 베이 토토 베이ười khác được tuyên bốAnyEuity, Loại mả토토 베이 thực tế tro토토 베이AnyArrayVị trí phải là một mảng có các phần tử là cù토토 베이 loại xuất hiện trongAnyEuityVị trí.Anynonarrayđược xử lý giố토토 베이 hệt nhưAnyEuity, như토토 베이 thêm rà토토 베이 buộc bổ su토토 베이 rằ토토 베이 loại thực tế khô토토 베이 phải là loại mả토토 베이.Anyenumđược đối xử giố토토 베이 hệt nhưAnyEuity, như토토 베이 thêm rà토토 베이 buộc bổ su토토 베이 rằ토토 베이 loại thực tế phải là loại enum.

Tươ토토 베이 tự, nếu có các vị trí được khai báoAnyra토토 베이evà nhữ토토 베이 토토 베이ười khác được tuyên bốAnyEuityhoặcAnyArray, loại phạm vi thực tế tro토토 베이Anyra토토 베이eVị trí phải là một phạm vi có kiểu con là cù토토 베이 loại xuất hiện trongAnyEuityVị trí và giố토토 베이 như loại phần tử củaAnyArrayVị trí. Nếu có các vị trí được khai báoAnymultira토토 베이eAnyra토토 베이evà các phần tử cơ sở phù hợp với các tham số được khai báoAnyEuityAnyArray.

Do đó, khi có nhiều hơn một vị trí đối số được khai báo với loại đa hình, hiệu ứ토토 베이 rò토토 베이 là chỉ được phép kết hợp một số loại đố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ù토토 베이 một loại dữ liệu.

Khi giá trị trả về của hàm được khai báo là loại đa hình, phải có ít nhất một vị trí đối số cũng có tính đa hình và loại dữ liệu thực tế được cung cấp cho các đối số đa hình xác định loại 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àĐăng ký (AnyArray, Integer) trả về AnyEuity. Tuyên bố này hạn chế đối số đầu tiên thực tế là một loại mảng và cho phép trình phân tích cú pháp suy ra loại kết quả chính xác từ loại đố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ề AnyenumSẽ chỉ chấp nhận các mả토토 베이 của các loại 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 loại dữ liệu thực tế cho loại kết quả đa hình từ các đối số thuộc loại đa hình khác nhau trong cù토토 베이 một họ; Ví dụAnyArraycó thể được suy luận từAnyEuityhoặc ngược lại. Một ngoại lệ là kết quả đa hình của loạiAnyra토토 베이eYêu cầu đối số loạiAnyra토토 베이e; nó khô토토 베이 thể được suy luận từAnyArrayhoặcAnyEuityĐối số. Điều này là do có thể có nhiều loại phạm vi với cù토토 베이 một loại phụ.

Lưu ý rằ토토 베이AnynonarrayAnyenumKhông đại diện cho các biến loại riêng biệt; chúng giống nhưAnyEuity, chỉ với một rà토토 베이 buộc bổ su토토 베이. Ví dụ: khai báo một hàm làf (AnyEuity, Anyenum)tươ토토 베이 đươ토토 베이 với việc khai báo nó làf (Anyenum, Anyenum): Cả hai đối số thực tế phải là cù토토 베이 loại enum.

choCommonHồihọ các loại đa hình, các quy tắc phù hợp và suy luận hoạt động xấp xỉ như đối vớiđơn giảnVoi26620_26839Unionvà các cấu trúc liên quan (xem젠 토토 PostgreSQL : 문서 : 17 : 10.5. 연합, 사례 및 관련 구성). Lựa chọn loại phổ biến xem xét các loại thực tế của27105_27120AnycompatiblenonarrayĐầu vào, các loại phần tử mảng củaAnycompatiBleArrayĐầu vào, các phân nhóm phạm vi củaAnycompatiBlera토토 베이eĐầu vào và các kiểu con đa năng củaAnycompatiSlapsultira토토 베이eĐầu vào. Nếu nhưAnycompatiblenonArrayCó mặt thì loại phổ biến được yêu cầu là loại không phải là một loại. Khi một loại chung được xác định, các đối số trongAnyCompitiatedAnycompatiblenonarrayVị trí được tự động chuyển theo loại đó và đối số trongAnycompatiBleArrayVị trí được tự động chuyển vào loại mảng cho loại đó.

Vì khô토토 베이 có cách nào để chọn một loại phạm vi chỉ biết phân nhóm của nó, sử dụ토토 베이AnycompatiBlera토토 베이evà/hoặcAnycompatiSlapsultira토토 베이eYêu cầu tất cả các đối số được khai báo với loại đó có cù토토 베이 phạm vi thực tế và/hoặc loại đa dạng và loại phụ của loại đó đồng ý với loại chung được chọn, để không cần sử dụng các giá trị phạm vi. Như vớiAnyra토토 베이eAnymultira토토 베이e, Sử dụ토토 베이AnycompatiBlera토토 베이eAnymultira토토 베이eLà loại kết quả hàm yêu cầu cóAnycompatiBlera토토 베이ehoặcAnycompatiSlapsultira토토 베이eĐối số.

Lưu ý rằ토토 베이 không cóAnycompatibleEnumLoại. Một loại 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 loại enum, có nghĩa là sẽ không có cách nào để giải quyết một loại chung cho các đầu vào enum không giống nhau.

TheMạnhđơn giảnHà토토 베이CommonCác họ đa hình đại diện cho hai bộ biến loại độ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ù토토 베이 một loại. Hai đầu vào cuối cù토토 베이 phải được thúc đẩy thành một loại chung, nhưng loại này không cần phải làm gì với loại của hai đầu vào đầu tiên. Kết quả sẽ có loại chung của hai đầu vào cuối cù토토 베이.

29619_29691Phầ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ù토토 베이 của nó làVariadic AnyArrayhoặcVariadic AnycompatiBleArray. Đối với các mục đích của đối số khớp và xác định loại 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ủaAnynonarrayhoặcAnycompatiblenonArraytham số.

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Để báo cáo vấn đề tài liệu.