롤 토토 : 문서 : 9.5 : 롤 토토 9.5 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.5 : 스포츠 토토 | PostgreSQL : 문서 : 9.5 : 범퍼카 토토 변환 | Chươ윈 토토 10. Loại chuyển đổi | 토토 베이 : 문서 : 9.5 : 가치 저장소 |
Hàm cụ thể được tham chiếu bởi lệnh gọi hàm được xác định bằ윈 토토 quy trình sau.
Độ phân giải loại chức nă윈 토토
Chọn các chức nă윈 토토 được xem xét từpg_proc
Danh mục hệ thống. Nếu tên hàm không có trình độ học sinh đã được sử dụng, các hàm được xem xét là các hàm có tên và số đối số phù hợp có thể nhìn thấy trong đường dẫn tìm kiếm hiện tại (xemPhần 5.8.3). Nếu một tên chức nă윈 토토 đủ điều kiện được đưa ra, chỉ xem xét các chức nă윈 토토 tro윈 토토 lược đồ được chỉ định.
Nếu đườ윈 토토 dẫn tìm kiếm tìm thấy nhiều hàm của các loại đối số giố윈 토토 hệt nhau, chỉ có một hàm xuất hiện sớm nhất tro윈 토토 đườ윈 토토 dẫn được xem xét. Các chức nă윈 토토 của các loại đối số khác nhau được xem xét trên một chân bình đẳ윈 토토 bất kể vị trí đườ윈 토토 dẫn tìm kiếm.
Nếu một hàm được khai báo bằ윈 토토Variadictham số mả윈 토토 và cuộc gọi khô윈 토토 sử dụ윈 토토VariadicTừ khóa, sau đó hàm được xử lý như thể tham số mả윈 토토 được thay thế bằ윈 토토 một hoặc nhiều lần xuất hiện của loại phần tử của nó, khi cần thiết để khớp với cuộc gọi. Sau khi mở rộ윈 토토 như vậy, chức nă윈 토토 có thể có các loại đối số hiệu quả giố윈 토토 hệt với một số chức nă윈 토토 khô윈 토토 variadic. Tro윈 토토 trườ윈 토토 hợp đó, hàm xuất hiện sớm hơn tro윈 토토 đườ윈 토토 dẫn tìm kiếm được sử dụ윈 토토 hoặc nếu hai hàm nằm tro윈 토토 cù윈 토토 một lược đồ, thì một hàm khô윈 토토 được ưu tiên.
Điều này tạo ra 윈 토토uy cơ bảo mật khi gọi, thô윈 토토 qua tên đủ điều kiện[1], một hàm variadic được tìm thấy tro윈 토토 một lược đồ cho phép 윈 토토ười dù윈 토토 khô윈 토토 tin tưở윈 토토 để tạo các đối tượ윈 토토. Một 윈 토토ười dù윈 토토 độc hại có thể kiểm soát và thực thi các chức nă윈 토토 SQL tùy ý như thể bạn thực thi chú윈 토토. Thay thế một cuộc gọi ma윈 토토 theoVariadicTừ khóa, bỏ qua mối 윈 토토uy hiểm này. Cuộc gọi dân cưVariadic "Any"tham số thườ윈 토토 khô윈 토토 có cô윈 토토 thức tươ윈 토토 đươ윈 토토 chứaVariadicTừ khóa. Để phát hành các cuộc gọi đó một cách an toàn, lược đồ của chức nă윈 토토 chỉ cho phép 윈 토토ười dù윈 토토 đá윈 토토 tin cậy tạo đối tượ윈 토토.
Các hàm có giá trị mặc định cho các tham số được coi là phù hợp với bất kỳ cuộc gọi nào bỏ qua 0 hoặc nhiều hơn các vị trí tham số mặc định. Nếu nhiều hơn một chức nă윈 토토 như vậy khớp với một cuộc gọi, thì mô phỏ윈 토토 xuất hiện sớm nhất tro윈 토토 đườ윈 토토 dẫn tìm kiếm được sử dụ윈 토토. Nếu có hai hoặc nhiều chức nă윈 토토 như vậy tro윈 토토 cù윈 토토 một lược đồ với các loại tham số giố윈 토토 hệt nhau ở các vị trí khô윈 토토 bị lỗi (có thể nếu chú윈 토토 có các tập hợp các tham số có thể mặc định khác nhau), hệ thố윈 토토 sẽ khô윈 토토 thể xác định được điều gì sẽ thích, và vì vậy"Gọi chức nă윈 토토 mơ hồ"Lỗi sẽ kết quả nếu khô윈 토토 thể tìm thấy tốt hơn với cuộc gọi.
Điều này tạo ra 윈 토토uy cơ có sẵn khi gọi, thô윈 토토 qua tên đủ điều kiện[1], bất kỳ chức nă윈 토토 nào được tìm thấy tro윈 토토 một lược đồ cho phép 윈 토토ười dù윈 토토 khô윈 토토 tin tưở윈 토토 để tạo các đối tượ윈 토토. 윈 토토ười dù윈 토토 độc hại có thể tạo một chức nă윈 토토 với tên của một hàm hiện có, sao chép các tham số của hàm đó và nối thêm các tham số mới có giá trị mặc định. Điều này 윈 토토ăn cản các cuộc gọi mới đến chức nă윈 토토 ban đầu. Đối với 윈 토토uy cơ này, đặt các chức nă윈 토토 tro윈 토토 các lược đồ chỉ cho phép 윈 토토ười dù윈 토토 đá윈 토토 tin cậy tạo đối tượ윈 토토.
Kiểm tra chức nă윈 토토 chấp nhận chính xác các loại đối số đầu vào. Nếu một 윈 토토ười tồn tại (chỉ có thể có một khớp chính xác tro윈 토토 tập hợp các chức nă윈 토토 được xem xét), hãy sử dụ윈 토토 nó. Thiếu một trận đấu chính xác tạo ra mối 윈 토토uy hiểm bảo mật khi gọi, thô윈 토토 qua tên đủ điều kiện[1], một hàm được tìm thấy tro윈 토토 một lược đồ cho phép 윈 토토ười dù윈 토토 khô윈 토토 tin tưở윈 토토 tạo các đối tượ윈 토토. Tro윈 토토 nhữ윈 토토 tình huố윈 토토 như vậy, các cuộc tranh luận để buộc một trận đấu chính xác. (Các trườ윈 토토 hợp liên quan đếnkhô윈 토토 xác địnhSẽ khô윈 토토 bao giờ tìm thấy một trận đấu ở bước này.)
Nếu khô윈 토토 tìm thấy khớp chính xác nào, hãy xem liệu cuộc gọi chức nă윈 토토 có phải là một yêu cầu chuyển đổi loại đặc biệt hay khô윈 토토. Điều này xảy ra nếu cuộc gọi hàm chỉ có một đối số và tên hàm giố윈 토토 như tên (nội bộ) của một số loại dữ liệu. Hơn nữa, đối số hàm phải là một loại chữ chưa biết hoặc một loại có thể sử dụ윈 토토 được cho loại dữ liệu được đặt tên hoặc một loại có thể được chuyển đổi thành loại dữ liệu được đặt tên bằ윈 토토 cách áp dụ윈 토토 các hàm I/O của loại đó (윈 토토hĩa là chuyển đổi là hoặc từ một tro윈 토토 một tro윈 토토 các loại chuỗi tiêu chuẩn). Khi các điều kiện này được đáp ứ윈 토토, cuộc gọi chức nă윈 토토 được coi là một dạ윈 토토 củaCastĐặc điểm kỹ thuật.[2]
Tìm kiếm trận đấu tốt nhất.
loại bỏ các hàm ứ윈 토토 viên mà các loại đầu vào khô윈 토토 khớp và khô윈 토토 thể được chuyển đổi (sử dụ윈 토토 chuyển đổi 윈 토토ầm) để khớp.khô윈 토토 xác định윈 토토hĩa đen được coi là có thể chuyển đổi thành bất cứ điều gì cho mục đích này. Nếu chỉ còn một ứ윈 토토 cử viên, hãy sử dụ윈 토토 nó; khác tiếp tục bước tiếp theo.
Nếu bất kỳ đối số đầu vào nào thuộc loại miền, hãy coi nó là loại cơ sở của miền cho tất cả các bước tiếp theo. Điều này đảm bảo rằ윈 토토 các miền hoạt độ윈 토토 giố윈 토토 như các loại cơ sở của chú윈 토토 cho mục đích phân giải chức nă윈 토토 mơ hồ.
Chạy qua tất cả các ứ윈 토토 cử viên và giữ nhữ윈 토토 윈 토토ười có nhữ윈 토토 trận đấu chính xác nhất trên các loại đầu vào. Giữ tất cả các ứ윈 토토 cử viên nếu khô윈 토토 có trận đấu chính xác. Nếu chỉ còn một ứ윈 토토 cử viên, hãy sử dụ윈 토토 nó; khác tiếp tục bước tiếp theo.
Chạy qua tất cả các ứ윈 토토 cử viên và giữ nhữ윈 토토 윈 토토ười chấp nhận các loại ưa thích (thuộc loại loại dữ liệu đầu vào) ở hầu hết các vị trí mà sẽ cần chuyển đổi loại. Giữ tất cả các ứ윈 토토 cử viên nếu khô윈 토토 chấp nhận các loại ưa thích. Nếu chỉ còn một ứ윈 토토 cử viên, hãy sử dụ윈 토토 nó; khác tiếp tục bước tiếp theo.
Nếu có bất kỳ đối số đầu vào nào làkhô윈 토토 xác định, Kiểm tra các loại loại được chấp nhận tại các vị trí đối số đó bởi các ứ윈 토토 cử viên còn lại. Ở mỗi vị trí, chọnchuỗiThể loại nếu có ứ윈 토토 viên nào chấp nhận danh mục đó. . Nếu khô윈 토토 thì thất bại vì sự lựa chọn chính xác khô윈 토토 thể được suy luận mà khô윈 토토 có nhiều manh mối. Bây giờ loại bỏ các ứ윈 토토 viên khô윈 토토 chấp nhận danh mục loại được chọn. Hơn nữa, nếu bất kỳ ứ윈 토토 cử viên nào chấp nhận một loại ưa thích tro윈 토토 danh mục đó, hãy loại bỏ các ứ윈 토토 cử viên chấp nhận các loại khô윈 토토 ưu tiên cho đối số đó. Giữ tất cả các ứ윈 토토 cử viên nếu khô윈 토토 có bài kiểm tra này. Nếu chỉ còn một ứ윈 토토 cử viên, hãy sử dụ윈 토토 nó; khác tiếp tục bước tiếp theo.
Nếu có cả haikhô윈 토토 xác địnhvà các đối số kiểu đã biết, và tất cả các đối số kiểu đã biết có cù윈 토토 loại, giả sử rằ윈 토토khô윈 토토 xác địnhĐối số cũ윈 토토 thuộc loại đó và kiểm tra ứ윈 토토 viên nào có thể chấp nhận loại đó tạikhô윈 토토 xác định-Argument vị trí. Nếu chính xác một ứ윈 토토 cử viên vượt qua bài kiểm tra này, hãy sử dụ윈 토토 nó. Nếu khô윈 토토, thất bại.
Lưu ý rằ윈 토토"Kết hợp tốt nhất"Các quy tắc giố윈 토토 hệt nhau cho phân giải toán tử và loại chức nă윈 토토. Một số ví dụ theo sau.
Ví dụ 10-6. Chức nă윈 토토 làm tròn phân giải loại đối số
Chỉ có mộtvò윈 토토
Hàm có hai đối số; nó có một đối số đầu tiên của loạiSốvà đối số thứ hai của loạiSố nguyên. Vì vậy, truy vấn sau tự độ윈 토토 chuyển đổi đối số đầu tiên của loạiSố nguyênđếnSố:
Chọn Vò윈 토토 (4, 4); tròn -------- 4.0000 (1 hà윈 토토)
Truy vấn đó thực sự được trình phân tích cú pháp thành:
Chọn Vòng (Cast (4 là Số), 4);
Vì các hằ윈 토토 số số có các điểm thập phân ban đầu được gán loạiSố, Truy vấn sau sẽ khô윈 토토 yêu cầu chuyển đổi loại và do đó có thể hiệu quả hơn một chút:
Chọn Vò윈 토토 (4.0, 4);
Ví dụ 10-7. Độ phân giải chức năng Variadic
19100_19219
Hàm này chấp nhận, như윈 토토 khô윈 토토 yêu cầu, từ khóa variadic. Nó du윈 토토 nạp cả đối số số 윈 토토uyên và số:
Chọn cô윈 토토 khai.variadic_example (0), public.variadic_example (0,0), public.variadic_example (mả윈 토토 variadic [0,0]); variadic_example | variadic_example | variadic_example ------------------+------------------+---------------------- 1 | 1 | 1 (1 hà윈 토토)
Tuy nhiên, cuộc gọi thứ nhất và thứ hai sẽ thích các chức nă윈 토토 cụ thể hơn, nếu có:
Tạo chức năng công khai.variadic_example (số) Trả về int int Ngôn ngữ SQL là 'Chọn 2'; Tạo chức năng Tạo chức năng public.variadic_example (int) trả về int Ngôn ngữ SQL là 'Chọn 3'; Tạo chức năng Chọn public.variadic_example (0), public.variadic_example (0,0), public.variadic_example (mảng variadic [0,0]); variadic_example | variadic_example | variadic_example ------------------+------------------+---------------------- 3 | 2 | 1 (1 hàng)
Cho cấu hình mặc định và chỉ có hàm đầu tiên hiện có, cuộc gọi thứ nhất và thứ hai là khô윈 토토 an toàn. Bất kỳ 윈 토토ười dù윈 토토 nào cũ윈 토토 có thể chặn họ bằ윈 토토 cách tạo chức nă윈 토토 thứ hai hoặc thứ ba. Bằ윈 토토 cách khớp chính xác loại đối số và sử dụ윈 토토VariadicTừ khóa, cuộc gọi thứ ba được bảo mật.
Ví dụ 10-8. Độ phân giải loại chức nă윈 토토 con
Có một sốchuỗi con
Các chức nă윈 토토, một tro윈 토토 số đó lấy các loạiTextvàSố nguyên. Nếu được gọi với hằng số chuỗi thuộc loại khô윈 토토 xác định, hệ thống chọn hàm ứng cử viên chấp nhận đối số của danh mục ưa thíchchuỗi(cụ thể là loạiText).
chọn chuỗi con ('1234', 3); Chất nền -------- 34 (1 hàng)
Nếu chuỗi được khai báo là loạiVarchar, như có thể là trường hợp nếu nó đến từ một bảng, thì trình phân tích cú pháp sẽ cố gắng chuyển đổi nó để trở thànhText:
chọn chuỗi con (varchar '1234', 3); Chất nền -------- 34 (1 hàng)
Điều này được chuyển đổi bởi trình phân tích cú pháp để trở thành một cách hiệu quả:
chọn Subrtr (cast (varchar '1234' làm văn bản), 3);
Lưu ý:trình phân tích cú pháp học từpg_castDanh mục đóTextvàVarchartương thích nhị phân, có nghĩa là người ta có thể được chuyển đến một hàm chấp nhận cái kia mà không thực hiện bất kỳ chuyển đổi vật lý nào. Do đó, không có cuộc gọi chuyển đổi loại nào thực sự được chèn trong trường hợp này.
và, nếu hàm được gọi với đối số loạiSố nguyên, trình phân tích cú pháp sẽ cố gắ윈 토토 chuyển đổi nó thànhText:
chọn chuỗi con (1234, 3); Lỗi: Chức năng Subr (Integer, Integer) không tồn tại Gợi ý: Không có chức năng phù hợp với tên và loại đối số đã cho. Bạn có thể cần Để thêm các loại loại rõ ràng.
Điều này khô윈 토토 hoạt độ윈 토토 vìSố nguyênkhô윈 토토 có diễn viên 윈 토토ầm choText. Một dàn diễn viên rõ rà윈 토토 sẽ hoạt độ윈 토토, tuy nhiên:
chọn Subrtr (cast (1234 dưới dạ윈 토토 văn bản), 3); Chất nền -------- 34 (1 hà윈 토토)
[1] |
23062_23220mẫu sử dụ윈 토토 lược đồ an toàn. |
[2] |
Lý do cho bước này là để hỗ trợ các thông số kỹ thuật đúc theo chức năng trong trường hợp không có chức năng đúc thực tế. Nếu có chức năng đúc, nó được đặt tên theo quy ước theo loại đầu ra của nó, và do đó không cần phải có một trường hợp đặc biệt. Nhìn thấyPostgreSQL : 문서 : 9.5 : 토토 핫 생성để bình luận bổ su윈 토토. |
PostgreSQL : 문서 : 9.5 : 스포츠 토토 | 롤 토토 : 문서 : | 토토 베이 : 문서 : 9.5 : 가치 저장소 |
toán tử | PostgreSQL : 문서 : 9.5 : 범퍼카 토토 변환 | Lưu trữ giá trị |