38.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ả.

38.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.

38.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 : 문서 : 14 : 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 Ađộc lậpHồiLoạ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 : 문서 : 14 : 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 : 문서 : 14 : 8.17. 토토 베이 유형Để biết thêm thô토토 결과 tin.

38.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ể thay thế 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ụ토토 결과SQLlệnhTạo tên miền. Tham khảoPostgreSQL : 문서 : 14 : 8.18. 토토 꽁 머니 유형Để biết thêm thô토토 결과 tin.

38.2.4. Pseudo-Types

Có một vàiHồiPseudo-TypesHồicho các 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ó.

38.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á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 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ảng 38.1. Một số ví dụ về việc sử dụng của chúng xuất hiện trongPhần 38.5.11.

Bảng 38.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 : 문서 : 14 : 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 : 문서 : 14 : 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 : 문서 : 14 : 8.17. 토토 베이 유형)
AnyCompitiated phổ biến chỉ ra rằ토토 결과 một hàm chấp nhận bất kỳ loại dữ liệu nào, với tự độ토토 결과 quả토토 결과 bá nhiều đối số lên một loại dữ liệu chu토토 결과
AnycompatiBleArray phổ biến chỉ ra rằ토토 결과 một hàm chấp nhận bất kỳ loại dữ liệu mả토토 결과 nào, với việc tự độ토토 결과 quả토토 결과 bá nhiều đối số lên loại dữ liệu chu토토 결과
AnycompatiblenonArray Common 20330_20459
AnycompatiBlera토토 결과e Common 20614_20739
AnycompatiSlapsultira토토 결과e Common 20899_21029

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 là cù토토 결과 một 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 đối xử 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ù토토 결과 một loại enum.

choCommonxô토토 결과họ 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ớiMạnhđơn giảnGia đình, với một sự khác biệt lớn: Các loại 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 đến một loại phổ biến duy nhất. Loại phổ biến được chọn theo các quy tắc tương tự như đối vớiUnionvà các cấu trúc liên quan (xem배트맨 토토 PostgreSQL : 문서 : 14 : 10.5. 연합, 사례 및 관련 구성). Lựa chọn loại phổ biến xem xét các loại thực tế của26776_26791AnycompatiblenonArrayĐầ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 đúc theo loại đó và đối số trongAnycompatiBleArrayVị trí được tự động chuyển đến loại mảng cho loại đó.

Vì khô토토 결과 có cách nào để chọn loại phạm vi chỉ biết phân nhóm của nó, sử dụ토토 결과AnycompatiBlera토토 결과evà/hoặc27694_27719Yê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 loại 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.

Theđơn giảnHồiCommonHồiCá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ù토토 결과.

29290_29362Phần 38.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.