Tạo [hoặc thay thế] chức tỷ lệ kèo bóng đátên([argmode] [argname]argtype[Mặc định | =default_expr] [, ...]])) [ReturnRettype| Trả về bảng (Cột_name Cột_Type[, ...])]]] NGÔN NGỮLang_Name| CỬA SỔ | Bất biến | Ổn định | BAY HƠI | Được gọi trên NULL đầu vào | Trả về NULL trên đầu vào null | NGHIÊM NGẶT | [Bên ngoài] Invoker bảo mật | [Bên ngoài] Bảo mật Definer | TRỊ GIÁexec_cost| Hàngresult_rows| BỘCấu hình_parametertogiá trị| =giá trị| Từ hiện tại | BẰNG 'Định nghĩa' | BẰNG 'obj_file','link_symbol' ... [ VỚI (thuộc tính[, ...])]
12407_12424Xác định mới chức tỷ lệ kèo bóng đá.Tạo hoặc thay thế chức tỷ lệ kèo bóng đá12505_1264012658_12665Đặc quyền về ngôn ngữ.
Nếu bao gồm tên lược đồ, thì hàm được tạo trong lược đồ quy định. Nếu không nó được tạo trong hiện tại lược đồ. Tên của chức tỷ lệ kèo bóng đá mới không được khớp với bất kỳ Chức tỷ lệ kèo bóng đá với các loại đối số đầu vào tương tự trong cùng một lược đồ. Tuy nhiên, các chức tỷ lệ kèo bóng đá của các loại đối số khác nhau có thể chia sẻ tên (cái này được gọi làquá tải).
Để thay thế định nghĩa hiện tại của tỷ lệ kèo bóng đá hàm hiện có, sử dụngTạo hoặc thay thế chức tỷ lệ kèo bóng đá. Nó không phải là có thể thay đổi tên hoặc loại đối số của một hàm này cách (nếu bạn đã thử, bạn thực sự sẽ tạo ra một mới, khác biệt chức tỷ lệ kèo bóng đá). Cũng,tỷ lệ kèo bóng đá hoặc thay thế CHỨC NĂNGsẽ không cho phép bạn thay đổi loại trả lại của một chức tỷ lệ kèo bóng đá hiện có. Để làm điều đó, bạn phải bỏ và tái tạo chức tỷ lệ kèo bóng đá. (Khi sử dụngouttham số, Điều đó có nghĩa là bạn không thể thay đổi các loại của bất kỳouttham số ngoại trừ bằng cách bỏ chức tỷ lệ kèo bóng đá.)
KhiTạo hoặc thay thế chức tỷ lệ kèo bóng đáIS được sử dụng để thay thế một chức tỷ lệ kèo bóng đá hiện có, quyền sở hữu và Quyền của chức tỷ lệ kèo bóng đá không thay đổi. Tất cả các chức tỷ lệ kèo bóng đá khác các thuộc tính được gán các giá trị được chỉ định hoặc ngụ ý trong yêu cầu. Bạn phải sở hữu chức tỷ lệ kèo bóng đá để thay thế nó (bao gồm là thành viên của vai trò sở hữu).
Nếu bạn bỏ và sau đó tạo lại một hàm, chức tỷ lệ kèo bóng đá mới là không giống nhau như cũ; Bạn sẽ phải bỏ hiện tại Các quy tắc, quan điểm, kích hoạt, vv đề cập đến hàm cũ. Sử dụngTạo hoặc thay thế chức tỷ lệ kèo bóng đáĐể thay đổi a định nghĩa chức tỷ lệ kèo bóng đá mà không phá vỡ các đối tượng đề cập đến chức tỷ lệ kèo bóng đá. Cũng,Chức tỷ lệ kèo bóng đá thay đổicó thể được sử dụng để thay đổi hầu hết các thuộc tính phụ trợ của một chức tỷ lệ kèo bóng đá.
Người dùng tạo chức tỷ lệ kèo bóng đá trở thành chủ sở hữu của chức tỷ lệ kèo bóng đá.
Tên (Tùy chọn Lược đồ theo trình độ) của chức tỷ lệ kèo bóng đá để tạo.
Chế độ của tỷ lệ kèo bóng đá đối số:in, out, InouthoặcVariadic. Nếu bị bỏ qua, mặc định làin. Chỉ tỷ lệ kèo bóng đáOUTĐối số có thể theo dõiVariadictỷ lệ kèo bóng đá. Cũng,outvàInoutĐối số không thể được sử dụng cùng vớiBẢNG TRẢ LẠIký hiệu.
Tên của một đối số. Một số ngôn ngữ (bao gồm PL/PGSQL, nhưng hiện tại không phải SQL) cho phép bạn sử dụng tên trong các chức tỷ lệ kèo bóng đá cơ thể. Đối với các ngôn ngữ khác, tên của một đầu vào Đối số chỉ là tài liệu bổ sung, cho đến nay chức tỷ lệ kèo bóng đá tự quan tâm; Nhưng bạn có thể sử dụng đầu vào Tên đối số khi gọi một hàm để cải thiện Khả tỷ lệ kèo bóng đá đọc (xemPhần 4.3). Trong bất kỳ trường hợp, tên của tỷ lệ kèo bóng đá đối số đầu ra là đáng kể, Bởi vì nó xác định tên cột trong loại hàng kết quả. (Nếu bạn bỏ qua tên cho tỷ lệ kèo bóng đá đối số đầu ra, hệ thống sẽ chọn tên cột mặc định.)
Loại dữ liệu của các đối số của hàm (tùy chọn Lược đồ-đủ điều kiện), nếu có. Các loại đối số có thể là cơ sở, tổng hợp hoặc các loại miền hoặc có thể tham chiếu loại cột bảng.
Tùy thuộc vào ngôn ngữ thực hiện, nó cũng có thể được phép chỉ định"Pseudotypes"chẳng hạn nhưcString16869_17020
17035_17083Table_Name.Cột_name%loại. Sử dụng điều này tính tỷ lệ kèo bóng đá đôi khi có thể giúp tạo ra một chức tỷ lệ kèo bóng đá độc lập với thay đổi định nghĩa của bảng.
tỷ lệ kèo bóng đá biểu thức được sử dụng làm giá trị mặc định nếu Tham số không được chỉ định. Biểu thức phải là cưỡng chế loại đối số của tham số. Chỉ đầu vào (bao gồmInout) Các tham số có thể có tỷ lệ kèo bóng đá giá trị mặc định. Tất cả các tham số đầu vào sau tỷ lệ kèo bóng đá tham số có giá trị mặc định phải có giá trị mặc định là Tốt.
Loại dữ liệu trả về (tùy chọn đủ điều kiện lược đồ). Các Loại trả về có thể là loại cơ sở, tổng hợp hoặc miền hoặc có thể tham chiếu loại của tỷ lệ kèo bóng đá cột bảng. Tùy thuộc vào Ngôn ngữ triển khai Nó cũng có thể được phép chỉ định"Pseudotypes"chẳng hạn nhưcString. Nếu chức tỷ lệ kèo bóng đá không được phép Trả về một giá trị, chỉ địnhvoidnhư Loại trả về.
Khi cóouthoặcInouttham số,returnĐiều khoản có thể được bỏ qua. Nếu có mặt, nó phải đồng ý với loại kết quả được ngụ ý bởi đầu ra tham số:RecordNếu có nhiều tham số đầu ra hoặc cùng loại với đơn tham số đầu ra.
ThesetofCông cụ sửa đổi cho biết rằng chức tỷ lệ kèo bóng đá sẽ trả về một tập hợp các mục, thay vì mục đơn.
Loại cột được tham chiếu bằng cách viếtTable_Name.Cột_name%loại.
19290_19328BẢNG TRẢ LẠICú pháp. Điều này là hiệu quả tỷ lệ kèo bóng đá cách khác để tuyên bố tỷ lệ kèo bóng đá tênouttham số, ngoại trừBẢNG TRẢ LẠIcũng ngụ ýreturn setof.
Loại dữ liệu của cột đầu ra trongBẢNG TRẢ LẠICú pháp.
Tên của ngôn ngữ mà hàm là được triển khai. Có thể làSQL, C, Nội bộhoặc tên của người dùng do người dùng định nghĩa Ngôn ngữ thủ tục. Để tương thích ngược, tên có thể được đặt trong các trích dẫn đơn.
Windowchỉ ra rằng chức tỷ lệ kèo bóng đá làHàm cửa sổchứ không phải là một hàm đơn giản. Điều này hiện chỉ hữu ích cho các chức tỷ lệ kèo bóng đá được viết bằng C. TheWindow20581_20667
Những thuộc tính này thông báo cho Trình tối ưu hóa truy vấn về hành vi của chức tỷ lệ kèo bóng đá. Nhiều nhất một lựa chọn có thể chỉ định. Nếu không ai trong số này xuất hiện,Disrilelà giả định mặc định.
Immutablechỉ ra rằng chức tỷ lệ kèo bóng đá không thể sửa đổi cơ sở dữ liệu và luôn trả về Kết quả tương tự khi được đưa ra cùng một giá trị đối số; đó là, nó không thực hiện tra cứu cơ sở dữ liệu hoặc sử dụng Thông tin không trực tiếp trình bày trong danh sách đối số của nó. Nếu như Tùy chọn này được đưa ra, mọi cuộc gọi của chức tỷ lệ kèo bóng đá với Các đối số liên tục có thể được thay thế ngay lập tức bằng giá trị chức tỷ lệ kèo bóng đá.
Ổn định21599_22053sauTrình kích hoạt muốn truy vấn hàng
được sửa đổi bởi lệnh hiện tại.) Cũng lưu ý rằngcurrent_timestamp
Gia đình của
các chức tỷ lệ kèo bóng đá đủ điều kiện là ổn định, vì giá trị của chúng không
thay đổi trong một giao dịch.
Disrilechỉ ra rằng Giá trị chức tỷ lệ kèo bóng đá có thể thay đổi ngay cả trong một lần quét bảng, Vì vậy, không có tối ưu hóa có thể được thực hiện. Tương đối ít cơ sở dữ liệu Các chức tỷ lệ kèo bóng đá dễ bay hơi theo nghĩa này; Một số ví dụ làngẫu nhiên (), currval (), Timeofday (). Nhưng lưu ý rằng bất kỳ chức tỷ lệ kèo bóng đá nào có tác dụng phụ phải được phân loại biến động, ngay cả khi nó Kết quả là khá dễ đoán, để ngăn chặn các cuộc gọi không tối ưu hóa đi; Một ví dụ làsetVal ().
Để biết thêm chi tiết, xemPhần 35.6.
được gọi là đầu vào null(The mặc định) chỉ ra rằng hàm sẽ được gọi Thông thường khi một số lập luận của nó là vô giá trị. Đó là lúc đó chức tỷ lệ kèo bóng đá của tác giả có trách nhiệm kiểm tra NULL các giá trị nếu cần thiết và trả lời một cách thích hợp.
Trả về NULL trên đầu vào nullhoặcnghiêm ngặtcho biết chức tỷ lệ kèo bóng đá Luôn trả lại NULL bất cứ khi nào bất kỳ đối số nào của nó là NULL. Nếu tham số này được chỉ định, hàm không được thực hiện khi có các đối số null; thay vào đó là một null Kết quả được giả định tự động.
Bảo mật Invokerchỉ ra rằng chức tỷ lệ kèo bóng đá sẽ được thực thi với các đặc quyền của người dùng gọi nó. Đó là mặc định.bảo mật xác địnhChỉ định rằng chức tỷ lệ kèo bóng đá sẽ được thực thi với các đặc quyền của người dùng đã tạo nó.
Từ khóabên ngoàiIS được phép cho sự phù hợp SQL, nhưng nó là tùy chọn kể từ đó, Không giống như trong SQL, tính tỷ lệ kèo bóng đá này áp dụng cho tất cả các chức tỷ lệ kèo bóng đá không Chỉ những cái bên ngoài.
Một số dương đưa ra chi phí thực hiện ước tính cho chức tỷ lệ kèo bóng đá, theo đơn vịCPU_OPERATOR_COST. Nếu hàm trả về một bộ, đây là chi phí cho mỗi trở lại hàng. Nếu chi phí không được chỉ định, 1 đơn vị là giả sử cho các chức tỷ lệ kèo bóng đá ngôn ngữ C và nội bộ, và 100 Các đơn vị cho các chức tỷ lệ kèo bóng đá trong tất cả các ngôn ngữ khác. Giá trị lớn hơn khiến người lập kế hoạch cố gắng tránh đánh giá chức tỷ lệ kèo bóng đá Thường xuyên hơn mức cần thiết.
Một số dương cho số lượng hàng ước tính Rằng người lập kế hoạch nên mong đợi chức tỷ lệ kèo bóng đá trở lại. Cái này chỉ được phép khi hàm được khai báo trả về bộ. Giả định mặc định là 1000 hàng.
Thesetmệnh đề gây ra tham số cấu hình được chỉ định được đặt thành giá trị được chỉ định khi nhập hàm, và sau đó được khôi phục về giá trị trước của nó khi hàm thoát ra.Đặt từ hiện tạiLưu giá trị của tham số hiện tại khi26290_26307được thực hiện dưới dạng giá trị được áp dụng khi nhập chức tỷ lệ kèo bóng đá.
Nếu Asetmệnh đề được gắn vào một chức tỷ lệ kèo bóng đá, sau đó các hiệu ứng của mộtĐặt ĐỊA PHƯƠNGlệnh được thực thi bên trong hàm cho cùng một biến bị giới hạn trong hàm: Giá trị trước của tham số cấu hình vẫn được khôi phục tại Thoát chức tỷ lệ kèo bóng đá. Tuy nhiên, một bình thườngsetlệnh (không cócục bộ) ghi đèsetmệnh đề, nhiều như nó sẽ làm cho tỷ lệ kèo bóng đá trướcĐặt cục bộLệnh: The Hiệu ứng của một lệnh như vậy sẽ tồn tại sau khi thoát chức tỷ lệ kèo bóng đá, Trừ khi giao dịch hiện tại được cuộn trở lại.
xemsetvàChương 18Để biết thêm thông tin về tên và giá trị tham số được phép.
Hằng số chuỗi xác định hàm; ý nghĩa phụ thuộc vào ngôn ngữ. Nó có thể là một chức tỷ lệ kèo bóng đá nội bộ Tên, đường dẫn đến tệp đối tượng, lệnh SQL hoặc văn bản bằng ngôn ngữ thủ tục.
Thường rất hữu ích khi sử dụng trích dẫn đô la (xemPhần 4.1.2.4) để viết chuỗi định nghĩa chức tỷ lệ kèo bóng đá, thay vì cú pháp trích dẫn đơn bình thường. Không có đô la trích dẫn, bất kỳ trích dẫn đơn hoặc dấu gạch chéo ngược trong hàm Định nghĩa phải được thoát ra bằng cách nhân đôi chúng.
Hình thức này củaASmệnh đề là được sử dụng cho các hàm ngôn ngữ C có thể tải động khi Tên chức tỷ lệ kèo bóng đá trong mã nguồn ngôn ngữ C không giống nhau là tên của hàm SQL. Chuỗiobj_filelà tên của tệp chứa đối tượng có thể tải động vàlink_symbol28617_28854
Khi lặp lạiTạo chức tỷ lệ kèo bóng đáCuộc gọi tham khảo cùng tỷ lệ kèo bóng đá tệp đối tượng, tệp chỉ là được tải tỷ lệ kèo bóng đá lần mỗi phiên. Để dỡ và tải lại tệp (có lẽ trong quá trình phát triển), bắt đầu tỷ lệ kèo bóng đá phiên mới.
Cách lịch sử để chỉ định các phần tùy chọn của thông tin về chức tỷ lệ kèo bóng đá. Các thuộc tính sau đây có thể xuất hiện ở đây:
tương đương vớinghiêm ngặthoặcTrả về null trên null Đầu vào.
isCachablelà tỷ lệ kèo bóng đá lỗi thời Tương đương vớiImmutable; nó vẫn được chấp nhận để tương thích ngược lý do.
Tên thuộc tính không nhạy cảm với trường hợp.
Tham khảoPhần 35.3Để biết thêm thông tin về chức tỷ lệ kèo bóng đá viết.
PostgreSQLcho phép chức tỷ lệ kèo bóng đáquá tải; nghĩa là, cùng một tên có thể được sử dụng cho một số chức tỷ lệ kèo bóng đá khác nhau miễn là chúng có Các loại đối số đầu vào khác biệt. Tuy nhiên, tên C của tất cả Các chức tỷ lệ kèo bóng đá phải khác nhau, vì vậy bạn phải cho C quá tải C Chức tỷ lệ kèo bóng đá các tên C khác nhau (ví dụ: sử dụng các loại đối số như một phần của tên C).
Hai chức tỷ lệ kèo bóng đá được coi là giống nhau nếu chúng có giống nhau Tên vàINPUTCác loại đối số, bỏ qua bất kỳouttham số. Do đó, ví dụ như những tuyên bố xung đột:
Tạo chức tỷ lệ kèo bóng đá foo (int) ... Tạo chức tỷ lệ kèo bóng đá foo (int, out text) ...
Các chức tỷ lệ kèo bóng đá có danh sách loại đối số khác nhau sẽ không được được coi là xung đột vào thời điểm sáng tạo, nhưng nếu mặc định là miễn là họ có thể xung đột trong việc sử dụng. Ví dụ, xem xét
Tạo chức tỷ lệ kèo bóng đá foo (int) ... Tạo hàm foo (int, int mặc định 42) ...
tỷ lệ kèo bóng đá cuộc gọifoo (10)sẽ thất bại do sự mơ hồ về chức tỷ lệ kèo bóng đá nào nên được gọi.
toàn bộSQLLoại cú pháp là được phép khai báo các đối số của hàm và giá trị trả về. Tuy nhiên, các bộ điều chỉnh loại dấu ngoặc đơn (ví dụ: trường chính xác cho loạiSố31888_31911Tạo chức tỷ lệ kèo bóng đá. Do đó, ví dụ31990_32029IS Chính xác giống nhưTạo chức tỷ lệ kèo bóng đá foo (varchar) ....
Khi thay thế chức tỷ lệ kèo bóng đá hiện có bằngTạo hoặc thay thế chức tỷ lệ kèo bóng đá32225_32754
Nếu tỷ lệ kèo bóng đá hàm được khai báonghiêm ngặtVới tỷ lệ kèo bóng đáVariadicĐối số, sự nghiêm ngặt Kiểm tra các kiểm tra rằng mảng variadicNói chungkhông phải là null. Các chức tỷ lệ kèo bóng đá vẫn sẽ được gọi nếu mảng có các phần tử null.
33207_33306PostgreSQL:.
Tạo chức tỷ lệ kèo bóng đá Thêm (Số nguyên, Số nguyên) Trả về Integer Như 'Chọn $ 1 + $ 2;' Ngôn ngữ SQL Bất biến Trả về null trên đầu vào null;
Tăng số nguyên, sử dụng tên đối số, trongPL/PGSQL:
33671_33822
Trả về bản ghi chứa nhiều tham số đầu ra:
Tạo chức tỷ lệ kèo bóng đá DUP (trong int, out f1 int, out f2 văn bản) Như $$ Chọn $ 1, diễn viên ($ 1 dưới dạng văn bản) || 'là văn bản' $$ Ngôn ngữ SQL; Chọn * từ DUP (42);
Bạn có thể làm điều tương tự hơn tỷ lệ kèo bóng đá cách rõ ràng với tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá cách rõ ràng loại tổng hợp được đặt tên:
Tạo loại DUP_RESULT là (F1 int, F2 văn bản); Tạo chức tỷ lệ kèo bóng đá DUP (int) Trả về DUP_RESULT Như $$ Chọn $ 1, diễn viên ($ 1 dưới dạng văn bản) || 'là văn bản' $$ Ngôn ngữ SQL; Chọn * từ DUP (42);
tỷ lệ kèo bóng đá cách khác để trả về nhiều cột là sử dụngBảngHàm:
34534_34690
Tuy nhiên, ABảngHàm là khác với các ví dụ trước, bởi vì nó thực sự trả về asetcủa bản ghi, không chỉ tỷ lệ kèo bóng đá bản ghi.
vì abảo mật xác địnhHàm được thực thi với các đặc quyền của người dùng đã tạo nó, quan tâm là cần thiết để đảm bảo rằng chức tỷ lệ kèo bóng đá không thể bị lạm dụng. Vì bảo vệ,search_path35387_35806PG_TEMPNhư lần cuối cùng mục trongsearch_path. Hàm này Minh họa cách sử dụng an toàn:
Tạo chức tỷ lệ kèo bóng đá kiểm tra_password (văn bản uname, pass text) Trả lại boolean là $$ Tuyên bố đã thông qua Boolean; BẮT ĐẦU Chọn (PWD = $ 2) Từ NKT Trong đó tên người dùng = $ 1; Trở lại qua; KẾT THÚC; $$ Ngôn ngữ plpgsql Bảo mật xác định - Đặt một search_path an toàn: lược đồ đáng tin cậy, sau đó 'pg_temp'. Đặt search_path = admin, pg_temp;
trướcPostgreSQLPhiên bản 8.3,setTùy chọn không khả dụng, và vì vậy các chức tỷ lệ kèo bóng đá cũ hơn có thể chứa logic khá phức tạp đối với lưu, đặt và khôi phụcsearch_path. ThesetTùy chọn dễ sử dụng hơn cho việc này mục đích.
tỷ lệ kèo bóng đá điểm khác cần lưu ý là theo mặc định, thực thi Đặc quyền được cấp chocông khaicho mới đã tạo các chức tỷ lệ kèo bóng đá (xemGrantcho thêm thông tin). Thường xuyên bạn sẽ muốn hạn chế sử dụng Chức tỷ lệ kèo bóng đá xác định bảo mật chỉ có một số người dùng. Để làm điều đó, bạn Phải thu hồi mặc địnhcông khaiĐặc quyền và sau đó cấp đặc quyền thực thi một cách chọn lọc. Để tránh Có một cửa sổ có chức tỷ lệ kèo bóng đá mới có thể truy cập được cho tất cả, Tạo nó và đặt các đặc quyền trong một giao dịch. Vì ví dụ:
Bắt đầu; Tạo chức tỷ lệ kèo bóng đá kiểm tra_password (văn bản uname, pass văn bản) ... bảo mật xác định; Thu hồi tất cả trên chức tỷ lệ kèo bóng đá kiểm tra_password (văn bản uname, pass văn bản) từ công khai; Cấp thực thi trên chức tỷ lệ kèo bóng đá kiểm tra_password (văn bản uname, truyền văn bản) cho quản trị viên; LÀM;
ATạo chức tỷ lệ kèo bóng đáLệnh được xác định trong SQL: 1999 và sau đó. ThePOSTGRESQLPhiên bản tương tự nhưng không hoàn toàn tương thích. Các thuộc tính không thể di động, cũng không phải là các ngôn ngữ có sẵn khác nhau.
Để tương thích với tỷ lệ kèo bóng đá số hệ thống cơ sở dữ liệu khác,argmodecó thể được viết trước hoặc trước hoặc sau đó38156_38165. Nhưng chỉ đầu tiên cách tuân thủ tiêu chuẩn.
Tiêu chuẩn SQL không chỉ định mặc định tham số. Các cú pháp vớiMặc địnhTừ khóa là từ Oracle, và nó có phần trong tinh thần của tiêu chuẩn: SQL/PSM Sử dụng nó cho các giá trị mặc định biến. Cú pháp với=được sử dụng trong T-SQL và Firebird.