Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

10.3. kèo chấp bóng đá hôm nay#

Hàm cụ thể được tham chiếu bởi lệnh gọi hàm được xác định bằng quy trình sau.

Độ phân giải loại kèo chấp bóng đá hôm nay

  1. Chọn các kèo chấp bóng đá hôm nay được xem xét từPG_PROCDanh mục hệ thống. Nếu tên hàm không có trình độ học sinh đã được sử dụng, kèo chấp bóng đá hôm nay hàm được xem xét là kèo chấp bóng đá hôm nay 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.10.3). Nếu một tên kèo chấp bóng đá hôm nay đủ điều kiện được đưa ra, chỉ xem xét các kèo chấp bóng đá hôm nay trong lược đồ được chỉ định.

    1. Nếu đường dẫn tìm kiếm tìm thấy nhiều kèo chấp bóng đá hôm nay của các loại đối số giống hệt nhau, chỉ có loại xuất hiện sớm nhất trong đường dẫn được xem xét. Các kèo chấp bóng đá hôm nay của các loại đối số khác nhau được xem xét trên một chân bình đẳng bất kể vị trí đường dẫn tìm kiếm.

    2. Nếu một hàm được khai báo bằngVariadictham số mảng và cuộc gọi không sử dụngVariadicTừ khóa, sau đó hàm được xử lý như thể tham số mảng được thay thế bằng 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ộng như vậy, kèo chấp bóng đá hôm nay có thể có các loại đối số hiệu quả giống hệt với một số kèo chấp bóng đá hôm nay không variadic. Trong trường hợp đó, hàm xuất hiện sớm hơn trong đường dẫn tìm kiếm được sử dụng hoặc nếu hai hàm nằm trong cùng một lược đồ, thì một hàm không được ưu tiên.

      Điều này tạo ra nguy cơ bảo mật khi gọi, thông qua tên đủ điều kiện[10], một hàm variadic được tìm thấy trong một lược đồ cho phép người dùng không tin tưởng để tạo các đối tượng. Một người dùng độc hại có thể kiểm soát và thực thi các kèo chấp bóng đá hôm nay SQL tùy ý như thể bạn thực thi chúng. Thay thế một cuộc gọi mang theoVariadicTừ khóa, bỏ qua mối nguy hiểm này. Cuộc gọi dân cưVariadic "Any"tham số thường không có công thức tương đương 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 kèo chấp bóng đá hôm nay chỉ cho phép người dùng đáng tin cậy tạo đối tượng.

    3. 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 số 0 hoặc nhiều hơn các vị trí tham số mặc định. Nếu nhiều hơn một kèo chấp bóng đá hôm nay như vậy khớp với một cuộc gọi, thì mô phỏng xuất hiện sớm nhất trong đường dẫn tìm kiếm được sử dụng. Nếu có hai hoặc nhiều kèo chấp bóng đá hôm nay như vậy trong cùng một lược đồ với các loại tham số giống hệt nhau ở các vị trí không bị lỗi (có thể nếu chúng có các tập hợp các tham số có thể mặc định khác nhau), hệ thống sẽ không thể xác định được điều gì sẽ thích, và vì vậykèo chấp bóng đá hôm nay mơ hồ GọiHồiLỗi sẽ kết quả nếu không thể tìm thấy tốt hơn với cuộc gọi.

      Điều này tạo ra nguy cơ có sẵn khi gọi, thông qua tên đủ điều kiện[10], bất kỳ kèo chấp bóng đá hôm nay nào được tìm thấy trong lược đồ cho phép người dùng không tin tưởng tạo đối tượng. Người dùng độc hại có thể tạo một kèo chấp bóng đá hôm nay 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 ngăn cản các cuộc gọi mới đến kèo chấp bóng đá hôm nay ban đầu. Đối với nguy cơ này, đặt các kèo chấp bóng đá hôm nay trong các lược đồ chỉ cho phép người dùng đáng tin cậy tạo đối tượng.

  2. Kiểm tra kèo chấp bóng đá hôm nay chấp nhận chính xác các loại đối số đầu vào. Nếu một người tồn tại (chỉ có thể có một khớp chính xác trong tập hợp các kèo chấp bóng đá hôm nay được xem xét), hãy sử dụng nó. Thiếu một trận đấu chính xác tạo ra mối nguy hiểm bảo mật khi gọi, thông qua tên đủ điều kiện[10], một hàm được tìm thấy trong một lược đồ cho phép người dùng không tin tưởng để tạo kèo chấp bóng đá hôm nay đối tượng. Trong những tình huống như vậy, kèo chấp bóng đá hôm nay cuộc tranh luận để buộc một trận đấu chính xác. (kèo chấp bóng đá hôm nay trường hợp liên quan đếnkhông xác địnhSẽ không bao giờ tìm thấy một trận đấu ở bước này.)

  3. 15082_15701CastĐặc điểm kỹ thuật.[11]

  4. Tìm kiếm trận đấu tốt nhất.

    1. loại bỏ kèo chấp bóng đá hôm nay hàm ứng viên mà kèo chấp bóng đá hôm nay loại đầu vào không khớp và không thể chuyển đổi (sử dụng chuyển đổi ngầm) để khớp.không xác địnhnghĩa đen được cho 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 ứng cử viên, hãy sử dụng nó; khác tiếp tục bước tiếp theo.

    2. 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ằng các miền hoạt động giống như các loại cơ sở của chúng cho mục đích phân giải kèo chấp bóng đá hôm nay mơ hồ.

    3. Chạy qua tất cả kèo chấp bóng đá hôm nay ứng cử viên và giữ những người có những trận đấu chính xác nhất trên kèo chấp bóng đá hôm nay loại đầu vào. Giữ tất cả kèo chấp bóng đá hôm nay ứng cử viên nếu không có trận đấu chính xác. Nếu chỉ còn một ứng cử viên, hãy sử dụng nó; khác tiếp tục bước tiếp theo.

    4. Chạy qua tất cả kèo chấp bóng đá hôm nay ứng cử viên và giữ những người chấp nhận kèo chấp bóng đá hôm nay loại ưa thích (thuộc loại loại dữ liệu đầu vào) ở hầu hết kèo chấp bóng đá hôm nay vị trí mà sẽ cần chuyển đổi loại. Giữ tất cả kèo chấp bóng đá hôm nay ứng cử viên nếu không chấp nhận kèo chấp bóng đá hôm nay loại ưa thích. Nếu chỉ còn một ứng cử viên, hãy sử dụng nó; khác tiếp tục bước tiếp theo.

    5. Nếu có bất kỳ đối số đầu vào nào làkhông xác định17353_17478chuỗiThể loại nếu có ứng viên nào chấp nhận danh mục đó. . Nếu không thì thất bại vì sự lựa chọn chính xác không thể được suy luận mà không có nhiều manh mối. Bây giờ loại bỏ kèo chấp bóng đá hôm nay ứng viên không chấp nhận danh mục loại được chọn. Hơn nữa, nếu bất kỳ ứng cử viên nào chấp nhận một loại ưa thích trong danh mục đó, hãy loại bỏ kèo chấp bóng đá hôm nay ứng cử viên chấp nhận kèo chấp bóng đá hôm nay loại không ưu tiên cho đối số đó. Giữ tất cả kèo chấp bóng đá hôm nay ứng cử viên nếu không có bài kiểm tra này. Nếu chỉ còn một ứng cử viên, hãy sử dụng nó; khác tiếp tục bước tiếp theo.

    6. Nếu có cả haikhông xác địnhvà kèo chấp bóng đá hôm nay đối số kiểu đã biết, và tất cả kèo chấp bóng đá hôm nay đối số kiểu đã biết có cùng loại, giả sử rằngkhông xác địnhĐối số cũng thuộc kèo chấp bóng đá hôm nay đó và kiểm tra ứng viên nào có thể chấp nhận kèo chấp bóng đá hôm nay đó tạikhông xác định-Argument vị trí. Nếu chính xác một ứng cử viên vượt qua bài kiểm tra này, hãy sử dụng nó. Nếu không, thất bại.

Lưu ý rằngphù hợp nhấtCác quy tắc giống hệt nhau cho phân giải toán tử và loại kèo chấp bóng đá hôm nay. Một số ví dụ theo sau.

Ví dụ 10.6. kèo chấp bóng đá hôm nay làm tròn phân giải loại đối số

chỉ có mộtvònghàm có hai đối số; nó có một đối số đầu tiên của kèo chấp bóng đá hôm naySốvà đối số thứ hai của kèo chấp bóng đá hôm naySố nguyên19269_19346Số nguyênđếnSố:

Chọn Vòng (4, 4);

 tròn
--------
 4.0000
(1 hàng)

Truy vấn đó thực sự được chuyển đổi bởi trình phân tích cú pháp thành:

Chọn Vòng (Cast (4 là Số), 4);

19654_19732Số, Truy vấn sau sẽ không yêu cầu chuyển đổi kèo chấp bóng đá hôm nay và do đó có thể hiệu quả hơn một chút:

Chọn Vòng (4.0, 4);

Ví dụ 10.7. Độ phân giải kèo chấp bóng đá hôm nay Variadic

20171_20292

Hàm này chấp nhận, nhưng không yêu cầu, từ khóa Variadic. Nó dung nạp cả đối số số nguyên và số:

Chọn công khai.variadic_example (0),
       public.variadic_example (0,0),
       public.variadic_example (mảng variadic [0,0]);
 variadic_example | variadic_example | variadic_example
------------------+------------------+----------------------
                1 |                1 |                1
(1 hàng)

Tuy nhiên, cuộc gọi thứ nhất và thứ hai sẽ thích các kèo chấp bóng đá hôm nay cụ thể hơn, nếu có:

Tạo kèo chấp bóng đá hôm nay công khai.variadic_example (số) Trả về int int
  Ngôn ngữ SQL là 'Chọn 2';
Tạo kèo chấp bóng đá hôm nay

Tạo kèo chấp bóng đá hôm nay public.variadic_example (int) trả về int
  Ngôn ngữ SQL là 'Chọn 3';
Tạo kèo chấp bóng đá hôm nay

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)

21419_21656VariadicTừ khóa, cuộc gọi thứ ba được bảo mật.


Ví dụ 10.8. Độ phân giải loại kèo chấp bóng đá hôm nay con

Có một sốSubrCác kèo chấp bóng đá hôm nay, một trong số đó lấy các loạiTextSố nguyên. Nếu được gọi với hằng số chuỗi thuộc kèo chấp bóng đá hôm nay không 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à kèo chấp bóng đá hôm nayText).

chọn chuỗi con ('1234', 3);

 Chất nền
--------
     34
(1 hàng)

Nếu chuỗi được khai báo là kèo chấp bóng đá hôm nayVarchar, 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 đóText23110_23117Varchartươ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 kèo chấp bóng đá hôm nay 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ố kèo chấp bóng đá hôm naySố nguyên, trình phân tích cú pháp sẽ cố gắng chuyển đổi nó thànhText:

chọn chuỗi con (1234, 3);
Lỗi: kèo chấp bóng đá hôm nay Subr (Integer, Integer) không tồn tại
Gợi ý: Không có kèo chấp bóng đá hôm nay 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.

23768_23797Số nguyênKhông có diễn viên ngầm choText. Một dàn diễn viên rõ ràng sẽ hoạt động, tuy nhiên:

chọn chuỗi con (cast (1234 dưới dạng văn bản), 3);

 Chất nền
--------
     34
(1 hàng)



[10]Nguy hiểm không phát sinh với tên không phù hợp, bởi vì đường dẫn tìm kiếm có chứa kèo chấp bóng đá hôm nay lược đồ cho phép người dùng không tin tưởng tạo đối tượng không phải làmẫu sử dụng lược đồ an toàn.

[11]Lý do cho bước này là để hỗ trợ các thông số kỹ thuật diễn viên kiểu kèo chấp bóng đá hôm nay trong trường hợp không có kèo chấp bóng đá hôm nay đúc thực tế. Nếu có kèo chấp bóng đá hôm nay đú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ấyTạo Castđể bình luận bổ sung.

Gửi hiệu chỉnh

26154_26380Mẫu nàyĐể báo cáo vấn đề tài liệu.