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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo bóng đá hom nay trang chohiện tạiPhiên bản hoặc kèo bóng đá hom nay trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

tạo chức kèo bóng đá hom nay

tên

Tạo chức kèo bóng đá hom nay-Xác định chức kèo bóng đá hom nay mới

Synopsis

Tạo [hoặc thay thế] chức kèo bóng đá hom naytên([argmode] [argname]argtype[Mặc định | =default_expr] [, ...]]))
    [ReturnRettype| Trả về bảng (Cột_name Cột_Type[, ...])]]
   NGÔN NGỮLang_Name11412_11628exec_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[, ...])]]

Mô tả

Tạo chức kèo bóng đá hom nayXác định chức kèo bóng đá hom nay mới.Tạo hoặc thay thế chức kèo bóng đá hom naysẽ tạo một hàm mới hoặc thay thế một định nghĩa hiện có. Để có thể xác định chức kèo bóng đá hom nay, người dùng phải cósử dụngĐặ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 đồ được chỉ định. Nếu không, nó được tạo ra trong lược đồ hiện tại. Tên của hàm mới không được khớp với bất kỳ hàm hiện có nào với cùng loại đối số đầu vào trong cùng một lược đồ. Tuy nhiên, các chức kèo bóng đá hom nay của các loại đối số khác nhau có thể chia sẻ một tên (cái này được gọi làquá tải).

Để thay thế định nghĩa hiện tại của kèo bóng đá hom nay hàm hiện có, sử dụngTạo hoặc thay thế chức kèo bóng đá hom nay. Không thể thay đổi tên hoặc loại đối số của một hàm theo cách này (nếu bạn đã thử, bạn thực sự sẽ kèo bóng đá hom nay ra một hàm mới, khác biệt). Cũng,13244_1327213275_13408outtham số, điều đó có nghĩa là bạn không thể thay đổi các loại của bất kỳ nàoouttham số ngoại trừ bằng cách bỏ chức kèo bóng đá hom nay.)

KhiTạo hoặc thay thế chức kèo bóng đá hom nayđược sử dụng để thay thế một chức kèo bóng đá hom nay hiện có, quyền sở hữu và quyền của chức kèo bóng đá hom nay không thay đổi. Tất cả các thuộc tính chức kèo bóng đá hom nay khác được gán các giá trị được chỉ định hoặc ngụ ý trong lệnh. Bạn phải sở hữu chức kèo bóng đá hom nay để thay thế nó (điều này bao gồm là thành viên của vai trò sở hữu).

13922_14114Tạo hoặc thay thế chức kèo bóng đá hom nayĐể thay đổi định nghĩa hàm mà không phá vỡ các đối tượng đề cập đến hàm. Cũng,Chức kèo bóng đá hom nay thay đổicó thể được sử dụng để thay đổi hầu hết các thuộc tính phụ trợ của kèo bóng đá hom nay hàm hiện có.

Người dùng tạo chức kèo bóng đá hom nay trở thành chủ sở hữu của chức kèo bóng đá hom nay.

Để có thể tạo chức kèo bóng đá hom nay, bạn phải cósử dụngĐặc quyền về các loại đối số và loại trả về.

tham số

tên

Tên (tùy chọn Lược đồ theo trình độ) của hàm để kèo bóng đá hom nay.

argmode

Chế độ của kèo bóng đá hom nay đối số:in, out, INOUThoặcVariadic. Nếu bị bỏ qua, mặc định làin. Chỉ kèo bóng đá hom nayoutĐối số có thể theo dõiVariadic15200_15214outInout15275_15321BẢNG TRẢ LẠIký hiệu.

argname

Tên của một đối số. Một số ngôn ngữ (bao gồm SQL và PL/PGSQL) cho phép bạn sử dụng tên trong phần thân hàm. Đối với các ngôn ngữ khác, tên của một đối số đầu vào chỉ là tài liệu bổ sung, cho đến khi chức kèo bóng đá hom nay được quan tâm; Nhưng bạn có thể sử dụng tên đối số đầu vào khi gọi một hàm để cải thiện khả kèo bóng đá hom nay đọc (xemPhần 4.3). Trong mọi trường hợp, tên của kèo bóng đá hom nay đối số đầu ra là có ý nghĩa, 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 đối số đầu ra, hệ thống sẽ chọn tên cột mặc định.)

argtype

Loại dữ liệu của các đối số của hàm (tùy chọn Lược đồ theo trình độ), nếu có. Các loại đối số có thể là các loại cơ sở, tổng hợp hoặc miền hoặc có thể tham chiếu loại của cột bảng.

16292_16371"Pseudotypes"chẳng hạn nhưcString. Pseudotypes chỉ ra rằng loại đối số thực tế được chỉ định không đầy đủ hoặc bên ngoài tập hợp các loại dữ liệu SQL thông thường.

Loại cột được tham chiếu bằng cách viếtTable_Name.Cột_name%loại. Sử dụng tính kèo bóng đá hom nay này đôi khi có thể giúp tạo ra một chức kèo bóng đá hom nay độc lập với các thay đổi đối với định nghĩa của bảng.

default_expr

kèo bóng đá hom nay 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 được ép buộc với loại đối số của tham số. Chỉ đầu vào (bao gồmInout) Các tham số có thể có giá trị mặc định. Tất cả các tham số đầu vào theo kèo bóng đá hom nay tham số có giá trị mặc định cũng phải có giá trị mặc định.

Rettype

Kiểu dữ liệu trả về (tùy chọn đủ điều kiện lược đồ). Loại trả về có thể là loại cơ sở, tổng hợp hoặc tên miền hoặc có thể tham chiếu loại 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 hàm không được phép trả về kèo bóng đá hom nay giá trị, chỉ địnhvoidlà loại trả về.

Khi cóouthoặcInouttham số,returnĐiều khoản có thể được bỏ qua. Nếu có, nó phải đồng ý với loại kết quả được ngụ ý bởi các tham số đầu ra:RecordNếu có nhiều tham số đầu ra hoặc cùng loại với tham số đầu ra đơn.

ThesetofCông cụ sửa đổi cho biết rằng hàm sẽ trả về kèo bóng đá hom nay tập hợp các mục, thay vì kèo bóng đá hom nay mục.

Loại cột được tham chiếu bằng cách viếtTable_Name.Cột_name%loại.

Cột_name

Tên của cột đầu ra trongTrở về bảng18566_18630outtham số, ngoại trừBẢNG TRẢ LẠIcũng ngụ ýreturn setof.

Cột_Type

Loại dữ liệu của cột đầu ra trongBẢNG TRẢ LẠICú pháp.

Lang_Name

Tên của ngôn ngữ mà hàm được thực hiện. Nó có thể làSQL, C, Nội bộhoặc tên của ngôn ngữ thủ tục do người dùng xác định, ví dụ:PLPGSQL. Kèm theo tên trong các trích dẫn đơn được không dùng nữa và yêu cầu trường hợp phù hợp.

Window

Windowcho biết hàm 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 kèo bóng đá hom nay được viết trong C. TheWindowThuộc tính không thể thay đổi khi thay thế định nghĩa hàm hiện có.

bất biến
Ổn định
Disrily

Những thuộc tính này thông báo trình tối ưu hóa truy vấn về hành vi của hàm. Nhiều nhất kèo bóng đá hom nay lựa chọn có thể được chỉ định. Nếu không ai trong số này xuất hiện,20000_20010là giả định mặc định.

Immutablechỉ ra rằng hàm không thể sửa đổi cơ sở dữ liệu và luôn trả về cùng một kết quả 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 trong danh sách đối số của nó. Nếu tùy chọn này được đưa ra, bất kỳ cuộc gọi nào của hàm 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 kèo bóng đá hom nay.

Ổn địnhchỉ ra rằng hàm không thể sửa đổi cơ sở dữ liệu và trong một lần quét bảng, nó sẽ liên tục trả về cùng một kết quả cho cùng một giá trị đối số, nhưng kết quả của nó có thể thay đổi trên các câu lệnh SQL. Đây là lựa chọn phù hợp cho các chức kèo bóng đá hom nay có kết quả phụ thuộc vào tra cứu cơ sở dữ liệu, các biến tham số (như múi giờ hiện tại), v.v. (nó không phù hợp chosauTrình kích hoạt muốn truy vấn các hàng được sửa đổi bởi lệnh hiện tại.) Cũng lưu ý rằngcurrent_timestamp21052_21148

Cho biết giá trị chức kèo bóng đá hom nay có thể thay đổi ngay cả trong một lần quét bảng, do đó không thể thực hiện tối ưu hóa. Tương đối ít chức kèo bóng đá hom nay cơ sở dữ liệu không biến động 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 kèo bóng đá hom nay nào có tác dụng phụ phải được phân loại biến động, ngay cả khi kết quả của nó khá dễ đoán, để ngăn chặn các cuộc gọi được tối ưu hóa; Một ví dụ làsetVal ().

Để biết thêm chi tiết, xemPhần 35.6.

Leakproof

Leakproofchỉ ra rằng chức kèo bóng đá hom nay không có tác dụng phụ. Nó cho thấy không có thông tin về các đối số của nó ngoài giá trị trả về của nó. Ví dụ: một hàm ném thông báo lỗi cho một số giá trị đối số nhưng không phải các giá trị khác hoặc bao gồm các giá trị đối số trong bất kỳ thông báo lỗi nào, không chống lại. Trình lập kế hoạch truy vấn có thể đẩy các chức kèo bóng đá hom nay chống rò rỉ (nhưng không phải các chức kèo bóng đá hom nay khác) vào các chế độ xem được tạo bằngSecurity_BarrierTùy chọn. Nhìn thấyPostgreSQL: Tài liệu: 9Phần 38.5. Tùy chọn này chỉ có thể được đặt bởi Superuser.

được gọi là đầu vào null
Trả về NULL trên đầu vào null
nghiêm ngặt

được gọi trên đầu vào null(mặc định) chỉ ra rằng hàm sẽ được gọi bình thường khi một số đối số của nó là null. Sau đó, trách nhiệm của tác giả chức kèo bóng đá hom nay là kiểm tra các giá trị null nếu cần thiết và trả lời một cách thích hợp.

22931_22959hoặcnghiêm ngặtchỉ ra rằng hàm luôn trả về 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 thi khi có các đối số null; thay vào đó là kèo bóng đá hom nay kết quả null được giả định tự động.

[bên ngoài] Invoker bảo mật
[bên ngoài] Bảo mật xác định

Bảo mật InvokerCho biết rằng chức kèo bóng đá hom nay 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 kèo bóng đá hom nay 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àiđược phép phù hợp với SQL, nhưng nó là tùy chọn vì không giống như trong SQL, tính kèo bóng đá hom nay này áp dụng cho tất cả các chức kèo bóng đá hom nay không chỉ bên ngoài.

exec_cost

kèo bóng đá hom nay số dương đưa ra chi phí thực thi ước tính cho hàm, theo đơn vịCPU_OPERATOR_COST. Nếu hàm trả về một bộ, đây là chi phí cho mỗi hàng trả lại. Nếu chi phí không được chỉ định, 1 đơn vị được giả định cho các chức kèo bóng đá hom nay ngôn ngữ C và nội bộ và 100 đơn vị cho các chức kèo bóng đá hom nay trong tất cả các ngôn ngữ khác. Cá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 kèo bóng đá hom nay thường xuyên hơn mức cần thiết.

result_rows

Một số dương cho số lượng hàng ước tính mà người lập kế hoạch nên mong đợi chức kèo bóng đá hom nay trở lại. Điều này chỉ được phép khi hàm được khai báo trả về một bộ. Giả định mặc định là 1000 hàng.

Cấu hình_parameter
giá trị

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.Đặt từ hiện tạiLưu giá trị của tham số hiện tại khiTạo chức kèo bóng đá hom nayđược thực thi dưới dạng giá trị được áp dụng khi nhập hàm.

Nếu Asetmệnh đề được gắn vào kèo bóng đá hom nay hàm, sau đó các hiệu ứng của AĐặt cục bộLệ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 khi thoát chức kèo bóng đá hom nay. Tuy nhiên, một bình thườngsetlệnh (không cócục bộ) ghi đèsetmệnh đề, giống như nó sẽ làm cho trước trước đóĐặt cục bộLệnh: Các hiệu ứng của lệnh đó sẽ tồn tại sau khi thoát chức kèo bóng đá hom nay, trừ khi giao dịch hiện tại được quay lại.

xemsetChương 18Để biết thêm thông tin về tên và giá trị tham số được phép.

Định nghĩa

26143_26337

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 hàm, thay vì cú pháp trích dẫn đơn bình thường. Không có báo giá đô la, bất kỳ trích dẫn hoặc dấu gạch chéo ngược nào trong định nghĩa hàm phải được thoát bằng cách nhân đôi chúng.

obj_file, link_symbol

Hình thức này củaASmệnh đề được sử dụng cho các hàm ngôn ngữ C có thể tải động khi tên hàm trong mã nguồn ngôn ngữ C không giống như 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_symbollà ký hiệu liên kết của hàm, nghĩa là tên của hàm trong mã nguồn ngôn ngữ C. Nếu ký hiệu liên kết bị bỏ qua, nó được coi là giống như tên của hàm SQL được xác định. Tên C của tất cả các chức kèo bóng đá hom nay phải khác nhau, vì vậy bạn phải đưa ra các hàm C quá tải 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).

Khi lặp lạiTạo chức kèo bóng đá hom nayCác cuộc gọi Tham khảo cùng kèo bóng đá hom nay tệp đối tượng, tệp chỉ được tải kèo bóng đá hom nay lần mỗi phiên. Để dỡ và tải lại tệp (có lẽ trong quá trình phát triển), hãy bắt đầu kèo bóng đá hom nay phiên mới.

thuộc tính

Cách lịch sử để chỉ định các phần thông tin tùy chọn về hàm. Các thuộc tính sau có thể xuất hiện ở đây:

ISSTRICT

tương đương vớinghiêm ngặthoặcTrả về NULL trên đầu vào null.

iscachable

iscachablelà kèo bóng đá hom nay tương đương lỗi thờibất biến; nó vẫn được chấp nhận vì lý do tương thích ngược.

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 kèo bóng đá hom nay viết.

quá tải

PostgreSQLcho phép chức kèo bóng đá hom nayquá tải28803_29077Phần 10.3.

Hai chức kèo bóng đá hom nay được coi là giống nhau nếu chúng có cùng 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 kèo bóng đá hom nay foo (int) ...
Tạo chức kèo bóng đá hom nay foo (int, out text) ...

Các chức kèo bóng đá hom nay có danh sách loại đối số khác nhau sẽ không được coi là xung đột tại thời điểm tạo, nhưng nếu mặc định được cung cấp, chúng có thể xung đột được sử dụng. Ví dụ, xem xét

Tạo chức kèo bóng đá hom nay foo (int) ...
Tạo hàm foo (int, int mặc định 42) ...

kèo bóng đá hom nay cuộc gọifoo (10)sẽ thất bại do sự mơ hồ về chức kèo bóng đá hom nay nào nên được gọi.

Ghi chú

toàn bộSQLLoại cú pháp được phép khai báo các đối số của hàm và giá trị trả về. Tuy nhiên, bộ sửa đổi loại dấu ngoặc đơn (ví dụ: trường chính xác cho loạiSố) bị loại bỏ bởiTạo chức kèo bóng đá hom nay. Do đó, ví dụTạo chức kèo bóng đá hom nay foo (varchar (10)) ...hoàn toàn giống nhưTạo chức kèo bóng đá hom nay foo (varchar) ....

Khi thay thế chức kèo bóng đá hom nay hiện có bằngTạo hoặc thay thế chức kèo bóng đá hom nay, Có những hạn chế về việc thay đổi tên tham số. Bạn không thể thay đổi tên đã được gán cho bất kỳ tham số đầu vào nào (mặc dù bạn có thể thêm tên vào các tham số không có trước đó). Nếu có nhiều hơn kèo bóng đá hom nay tham số đầu ra, bạn không thể thay đổi tên của các tham số đầu ra, vì điều đó sẽ thay đổi tên cột của loại tổng hợp ẩn danh mô tả kết quả của hàm. Những hạn chế này được thực hiện để đảm bảo rằng các cuộc gọi hiện tại của hàm không ngừng hoạt động khi nó được thay thế.

Nếu kèo bóng đá hom nay hàm được khai báonghiêm ngặtvới AVariadicĐối số, kiểm tra nghiêm ngặt các kiểm tra rằng mảng variadicNói chungkhông phải là null. Hàm vẫn sẽ được gọi nếu mảng có các phần tử null.

Ví dụ

Dưới đây là kèo bóng đá hom nay số ví dụ tầm thường để giúp bạn bắt đầu. Để biết thêm thông tin và ví dụ, xemPhần 35.3.

Tạo chức kèo bóng đá hom nay 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ố, trong31893_31903:

Tạo hoặc thay thế chức kèo bóng đá hom nay tăng (I Integer) Trả về số nguyên dưới dạng $$
        BẮT ĐẦU
                Trả về i + 1;
        KẾT THÚC;
$$ ngôn ngữ plpgsql;

Trả về bản ghi chứa nhiều tham số đầu ra:

Tạo chức kèo bóng đá hom nay 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 với kèo bóng đá hom nay loại tổng hợp được đặt tên rõ ràng:

32459_32647

kèo bóng đá hom nay cách khác để trả về nhiều cột là sử dụngBảngHàm:

32779_32933

Tuy nhiên, ABảngHàm 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ỉ kèo bóng đá hom nay bản ghi.

Viếtbảo mật xác định33305_33324

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ó, cần phải quan tâm để đảm bảo rằng chức kèo bóng đá hom nay không thể bị sử dụng sai. Cho bảo mật,search_path33597_34002PG_TEMPlà mục cuối cùng trongsearch_path. Hàm này minh họa cách sử dụng an toàn:

Tạo chức kèo bóng đá hom nay 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;

34545_34554POSTGRESQLPhiên bản 8.3, ThesetTùy chọn không khả dụng và vì vậy các hàm cũ hơn có thể chứa logic khá phức tạp để lưu, đặt và khôi phụcsearch_path. ThesetTùy chọn dễ sử dụng hơn nhiều cho mục đích này.

kèo bóng đá hom nay điểm khác cần lưu ý là theo mặc định, đặc quyền thực thi được cấp chocông khaiĐối với các chức kèo bóng đá hom nay mới được tạo (xemGrantĐể biết thêm thông tin). Thường thì bạn sẽ muốn hạn chế sử dụng chức kèo bóng đá hom nay xác định bảo mật cho 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ổ nơi có thể truy cập chức kèo bóng đá hom nay mới, hãy tạo nó và đặt các đặc quyền trong một giao dịch. Ví dụ:

Bắt đầu;
Tạo chức kèo bóng đá hom nay 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 kèo bóng đá hom nay 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 kèo bóng đá hom nay kiểm tra_password (văn bản uname, truyền văn bản) cho quản trị viên;
LÀM;

Tương thích

ATạo chức kèo bóng đá hom nayLệnh được xác định trong SQL: 1999 trở lên. 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, không phải là các ngôn ngữ có sẵn khác nhau.

Để tương thích với kèo bóng đá hom nay số hệ thống cơ sở dữ liệu khác,argmodecó thể được viết trước hoặc sauargname. Nhưng chỉ theo cách đầu tiên là tuân thủ tiêu chuẩn.

Đối với mặc định tham số, tiêu chuẩn SQL chỉ chỉ định cú pháp vớiMặc địnhTừ khóa. Cú pháp với=được sử dụng trong T-SQL và Firebird.