Tạo kèo bóng đá pháp - Xác định một diễn viên mới
Tạo kèo bóng đá pháp (Source_Type
AStarget_type
) Với chức năngfunction_name
[(argion_type
[, ...])]]] [Như nhiệm vụ | Như tiềm ẩn] Tạo kèo bóng đá pháp (Source_Type
AStarget_type
) Không có chức năng [Như nhiệm vụ | Như tiềm ẩn] Tạo kèo bóng đá pháp (Source_Type
AStarget_type
) Với inout [Như nhiệm vụ | Như ẩn]
Tạo kèo bóng đá pháp
Xác định một kèo bóng đá pháp mới. Một kèo bóng đá pháp chỉ định cách thực hiện chuyển đổi giữa hai loại dữ liệu. Ví dụ,
Chọn kèo bóng đá pháp (42 là float8);
Chuyển đổi hằng số nguyên 42 thành loạifloat8
bằng cách gọi kèo bóng đá pháp chức năng được chỉ định trước đó, trong trường hợp nàyfloat8 (int4)
. (Nếu không có kèo bóng đá pháp phù hợp nào được xác định, chuyển đổi sẽ không thành công.)
11325_11344củng cố nhị phân, có nghĩa là có thể thực hiện chuyển đổiHồimiễn phíHồi11500_11636Text
vàVarchar
Có thể ép buộc nhị phân cả hai cách. Sự ép buộc nhị phân không nhất thiết là một mối quan hệ đối xứng. Ví dụ: kèo bóng đá pháp từXML
đếnText
11890_12125
Bạn có thể định nghĩa một kèo bóng đá pháp làI/O chuyển đổibằng cách sử dụngvới inout
Cú pháp. Một kèo bóng đá pháp chuyển đổi I/O được thực hiện bằng cách gọi chức năng đầu ra của kiểu dữ liệu nguồn và chuyển chuỗi kết quả đến chức năng đầu vào của kiểu dữ liệu đích. Trong nhiều trường hợp phổ biến, tính năng này tránh được sự cần thiết phải viết một chức năng đúc riêng để chuyển đổi. Một kèo bóng đá pháp chuyển đổi I/O hoạt động giống như một kèo bóng đá pháp dựa trên chức năng thông thường; Chỉ triển khai là khác nhau.
Theo mặc định, một kèo bóng đá pháp chỉ có thể được gọi bằng một yêu cầu kèo bóng đá pháp rõ ràng, đó là một điều rõ ràngkèo bóng đá pháp (
hoặcx
AStypename
)x
::
typename
Xây dựng.
Nếu kèo bóng đá pháp được đánh dấulàm bài tập
Sau đó, nó có thể được gọi ngầm khi gán kèo bóng đá pháp giá trị cho kèo bóng đá pháp cột của kiểu dữ liệu đích. Ví dụ: giả sử rằngfoo.f1
là kèo bóng đá pháp cột loạiText
, sau đó:
Chèn vào các giá trị foo (f1) (42);
sẽ được phép nếu kèo bóng đá pháp từ loạiSố nguyên
để loạiText
được đánh dấulàm bài tập
, nếu không thì không. (Chúng ta thường sử dụng thuật ngữkèo bóng đá pháp gánĐể mô tả loại kèo bóng đá pháp này.)
Nếu kèo bóng đá pháp được đánh dấunhư ẩn ửng
Sau đó, nó có thể được gọi ngầm trong bất kỳ bối cảnh nào, cho dù là gán hoặc nội bộ trong kèo bóng đá pháp biểu thức. (Chúng ta thường sử dụng thuật ngữkèo bóng đá pháp ngầmĐể mô tả loại kèo bóng đá pháp này.) Ví dụ, hãy xem xét truy vấn này:
Chọn 2 + 4.0;
Trình phân tích cú pháp ban đầu đánh dấu các hằng số là loạiSố nguyên
vàSố
tương ứng. Không cóSố nguyên
+
Số
toán tử trong danh mục hệ thống, nhưng có kèo bóng đá phápSố
+
Số
toán tử. Do đó, truy vấn sẽ thành công nếu kèo bóng đá pháp từSố nguyên
đếnSố
có sẵn và được đánh dấunhư ẩn ửng
- trên thực tế nó là. Trình phân tích cú pháp sẽ áp dụng các kèo bóng đá pháp ngầm và giải quyết truy vấn như thể nó đã được viết
Chọn kèo bóng đá pháp (2 là Số) + 4.0;
Bây giờ, các danh mục cũng cung cấp một kèo bóng đá pháp từSố
đếnSố nguyên
. Nếu kèo bóng đá pháp đó được đánh dấunhư ẩn ửng
- mà không phải - sau đó trình phân tích cú pháp sẽ phải đối mặt với việc lựa chọn giữa cách giải thích ở trên và thay thế của việc đúcSố
Hằng số thànhSố nguyên
và áp dụngSố nguyên
+
Số nguyên
15366_15602Số
-and-Số nguyên
Biểu thức asSố
; Không có kiến thức tích hợp về điều đó.
Thật khôn ngoan khi bảo thủ về việc đánh dấu các kèo bóng đá pháp là ngầm. Một sự dư thừa của các đường dẫn đúc ngầm có thể gây raPostgreSQLĐể chọn các diễn giải đáng ngạc nhiên về các lệnh hoặc không thể giải quyết các lệnh bởi vì có nhiều cách giải thích có thể. Một quy tắc tốt là thực hiện một dàn kèo bóng đá pháp hoàn toàn có thể mời được cho các phép biến đổi bảo tồn thông tin giữa các loại trong cùng một loại loại chung. Ví dụ: kèo bóng đá pháp từINT2
16295_16301INT4
Có thể ẩn ý một cách hợp lý, nhưng kèo bóng đá pháp từfloat8
đếnINT4
Có lẽ chỉ nên được chuyển nhượng. Các kèo bóng đá pháp phân loại loại chéo, chẳng hạn nhưText
đếnINT4
16578_16610
Đôi khi cần thiết cho khả năng sử dụng hoặc lý do tuân thủ tiêu chuẩn để cung cấp nhiều kèo bóng đá pháp ngầm trong một tập hợp các loại, dẫn đến sự mơ hồ không thể tránh được như trên. Người phân tích cú pháp có một heuristic dự phòng dựa trênLoại danh mụcvàCác loại ưu tiênĐiều đó có thể giúp cung cấp hành vi mong muốn trong những trường hợp như vậy. Nhìn thấyTạo loạiĐể biết thêm thông tin.
Để có thể tạo một kèo bóng đá pháp, bạn phải sở hữu nguồn hoặc kiểu dữ liệu đích và cósử dụng
Đặc quyền ở loại khác. Để tạo ra một kèo bóng đá pháp nhị phân, bạn phải là siêu nhân. (Hạn chế này được thực hiện vì một chuyển đổi đúc nhị phân sai lầm có thể dễ dàng làm hỏng máy chủ.)
Source_Type
Tên của loại dữ liệu nguồn của dàn kèo bóng đá pháp.
target_type
Tên của kiểu dữ liệu đích của dàn kèo bóng đá pháp.
function_name
[(argarm_type
[, ...])]
Hàm được sử dụng để thực hiện kèo bóng đá pháp. Tên chức năng có thể được định mức lược đồ. Nếu không, chức năng sẽ được tra cứu trong đường dẫn tìm kiếm lược đồ. Kiểu dữ liệu kết quả của chức năng phải khớp với loại mục tiêu của dàn kèo bóng đá pháp. Các lập luận của nó được thảo luận dưới đây. Nếu không có danh sách đối số nào được chỉ định, tên chức năng phải là duy nhất trong lược đồ của nó.
không có chức năng
18751_18871
với inout
chỉ ra rằng đúc là kèo bóng đá pháp chuyển đổi I/O, được thực hiện bằng cách gọi hàm đầu ra của kiểu dữ liệu nguồn và chuyển chuỗi kết quả đến hàm đầu vào của kiểu dữ liệu đích.
làm bài tập
Cho biết rằng các kèo bóng đá pháp có thể được gọi ngầm trong bối cảnh gán.
như ẩn ửng
chỉ ra rằng các kèo bóng đá pháp có thể được gọi ngầm trong bất kỳ ngữ cảnh nào.
Các chức năng triển khai kèo bóng đá pháp có thể có một đến ba đối số. Loại đối số đầu tiên phải giống hệt với hoặc có thể sử dụng nhị phân từ loại nguồn của kèo bóng đá pháp. Đối số thứ hai, nếu có, phải là loạiSố nguyên
; nó nhận được trình sửa đổi loại được liên kết với loại đích hoặc-1
Nếu không có. Đối số thứ ba, nếu có, phải là loạiBoolean
; nó nhận đượctrue
Nếu kèo bóng đá pháp là dàn kèo bóng đá pháp rõ ràng,Sai
Nếu không. .
20473_20577
Thông thường, một diễn viên phải có các loại dữ liệu nguồn và mục tiêu khác nhau. Tuy nhiên, nó được phép khai báo một diễn viên với các loại nguồn và mục tiêu giống hệt nhau nếu nó có chức năng triển khai kèo bóng đá pháp với nhiều đối số. Điều này được sử dụng để thể hiện các hàm ép buộc chiều dài cụ thể trong các danh mục hệ thống. Hàm được đặt tên được sử dụng để ép buộc một giá trị của loại thành giá trị sửa đổi loại được đưa ra bởi đối số thứ hai của nó.
21020_21391
Một kèo bóng đá pháp đến hoặc từ một loại miền hiện không có hiệu lực. Đúc vào hoặc từ một miền sử dụng các phôi được liên kết với loại cơ bản của nó.
sử dụngDrop kèo bóng đá pháp
Để loại bỏ các kèo bóng đá pháp do người dùng định nghĩa.
21775_21888
Thông thường không cần thiết phải tạo phôi giữa các loại do người dùng xác định và các loại chuỗi tiêu chuẩn (Text
, Varchar
vàchar (
, cũng như các loại do người dùng xác định được xác định là trong danh mục chuỗi).PostgreSQL22339_23113n
)
23123_23373Typename
(x
). Ký hiệu này trên thực tế không có gì khác hơn một cuộc gọi của chức năng triển khai kèo bóng đá pháp; Nó không được coi là đặc biệt như một kèo bóng đá pháp. Nếu các chức năng chuyển đổi của bạn không được đặt tên để hỗ trợ quy ước này thì bạn sẽ có người dùng ngạc nhiên. TừPostgreSQLCho phép quá tải cùng kèo bóng đá pháp tên hàm với các loại đối số khác nhau, không có khó khăn gì trong việc có nhiều chức năng chuyển đổi từ các loại khác nhau mà tất cả đều sử dụng tên của loại đích.
Trên thực tế, đoạn trước là kèo bóng đá pháp sự đơn giản hóa quá mức: Có hai trường hợp trong đó cấu trúc gọi chức năng sẽ được coi là yêu cầu đúc mà không khớp với chức năng thực tế. Nếu kèo bóng đá pháp chức năng gọitên
(x
) không chính xác phù hợp với bất kỳ chức năng hiện có nào, nhưngtên
là tên của kiểu dữ liệu vàpg_cast
Cung cấp một kèo bóng đá pháp có thể sử dụng được cho loại này từ loạix
, thì cuộc gọi sẽ được hiểu là kèo bóng đá pháp có thể sử dụng được. Ngoại lệ này được thực hiện để các phôi có thể kết hợp nhị phân có thể được gọi bằng cách sử dụng cú pháp chức năng, mặc dù chúng thiếu bất kỳ chức năng nào. Tương tự như vậy, nếu không cóPG_CAST
Mục nhập nhưng kèo bóng đá pháp sẽ đến hoặc từ một loại chuỗi, cuộc gọi sẽ được hiểu là kèo bóng đá pháp chuyển đổi I/O. Ngoại lệ này cho phép các kèo bóng đá pháp chuyển đổi I/O được gọi bằng cú pháp chức năng.
25136_25336kèo bóng đá pháp
hoặc::
ký hiệu). Ngoại lệ này đã được thêm vào bởi vì sau khi giới thiệu các phôi chuyển đổi I/O được cung cấp tự động, nó đã được tìm thấy quá dễ dàng để vô tình gọi một kèo bóng đá pháp như vậy khi một chức năng hoặc tham chiếu cột được dự định.
Để tạo kèo bóng đá pháp bài tập được chọn từ loạiBigint
để loạiINT4
Sử dụng chức năngINT4 (BIGINT)
:
25941_26015
(kèo bóng đá pháp này đã được xác định trước trong hệ thống.)
TheTạo kèo bóng đá pháp
lệnh phù hợp vớiSQL26282_26411như ẩn ửng
là APostgreSQL26498_26516
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.