Postgresql Tài liệu 8.0.26 | ||||
---|---|---|---|---|
Prev | Backward nhanh | Chuyển tiếp nhanh | Tiếp theo |
Tạo [hoặc thay thế] kèo bóng đá c1tên([argname]argtype[, ...]])) Trả vềRettypeNgôn ngữLangname| 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 | BẰNG 'Định nghĩa' | BẰNG 'obj_file','link_symbol' ... [ VỚI (thuộc tính[, ...])]]
Tạo kèo bóng đá c1Xác định mới kèo bóng đá c1.Tạo hoặc thay thế kèo bóng đá c1sẽ tạo kèo bóng đá c1 mới hoặc thay thế một sự định nghĩa.
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 kèo bóng đá c1 mới không được khớp với bất kỳ kèo bóng đá c1 với cùng loại đối số trong cùng một lược đồ. Tuy nhiên, các kèo bóng đá c1 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).
Để cập nhật định nghĩa về kèo bóng đá c1 hiện có, sử dụngTạo hoặc thay thế kèo bóng đá c1. 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 kèo bóng đá c1). Cũng,kèo bóng đá c1 hoặc thay thế CHỨC NĂNGsẽ không cho phép bạn thay đổi loại trả về của một kèo bóng đá c1 hiện có. Để làm điều đó, bạn phải bỏ và tái tạo kèo bóng đá c1.
Nếu bạn bỏ và sau đó tạo lại một hàm, kèo bóng đá c1 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ế kèo bóng đá c1Để thay đổi a định nghĩa kèo bóng đá c1 mà không phá vỡ các đối tượng đề cập đến kèo bóng đá c1.
Người dùng tạo kèo bóng đá c1 trở thành chủ sở hữu của kèo bóng đá c1.
Tên (Tùy chọn Lược đồ theo trình độ) để kèo bóng đá c1.
Tên của một đối số. Một số ngôn ngữ (hiện chỉ PL/PGSQL) Cho phép bạn sử dụng tên trong cơ thể kèo bóng đá c1. Vì Các ngôn ngữ khác Tên đối số chỉ là thêm Tài liệu.
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ủa kèo bóng đá c1 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ưcString. Pseudotypes chỉ ra rằng loại đối số thực tế là không hoàn chỉnh được chỉ định hoặc bên ngoài tập hợp dữ liệu SQL thông thường các loại.
Loại cột được tham chiếu bằng cách viếtTableName.CộtName%loại14801_14927
15021_15285"Pseudotypes"chẳng hạn nhưcString.
ThesetofCông cụ sửa đổi cho biết rằng kèo bóng đá c1 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ếtTableName.CộtName15724_15731.
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 xác định 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.
Những thuộc tính này thông báo cho hệ thống xem có an toàn để thay thế nhiều đánh giá của hàm bằng kèo bóng đá c1 Đánh giá, để tối ưu hóa thời gian chạy. Nhiều nhất là kèo bóng đá c1 lựa chọn có thể được chỉ định. Nếu không ai trong số này xuất hiện,Disrilelà giả định mặc định.
Immutable16698_17088
ổn địnhchỉ ra rằng trong một
Quét bảng đơn, hàm sẽ liên tục trả về
kết quả tương tự cho cùng một giá trị đối số, nhưng nó
Kết quả 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 kèo bóng đá c1 có kết quả phụ thuộc vào
Tra cứu cơ sở dữ liệu, các biến tham số (chẳng hạn như hiện tại
múi giờ), v.v. cũng lưu ý rằng17564_17583
Gia đình kèo bóng đá c1
đủ điều kiện là ổn định, vì giá trị của chúng không thay đổi bên trong
một giao dịch.
Disrilychỉ ra rằng Giá trị kèo bóng đá c1 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 kèo bóng đá c1 dễ bay hơi theo nghĩa này; Một số ví dụ làngẫu nhiên (), currval (), Timeofday (). Lưu ý rằng bất kỳ kèo bóng đá c1 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 31.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 đó kèo bóng đá c1 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 kèo bóng đá c1 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 kèo bóng đá c1 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 kèo bóng đá c1 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 hiện diện cho sự phù hợp SQL nhưng là tùy chọn vì không giống như Trong SQL, tính năng này không chỉ áp dụng cho bên ngoài kèo bóng đá c1.
Một 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 kèo bóng đá c1 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.
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 kèo bóng đá c1 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à21012_21025là liên kết của kèo bóng đá c1 Biểu tượng, nghĩa là tên của hàm trong ngôn ngữ C. Mã nguồn. Nếu ký hiệu liên kết bị bỏ qua, nó được giả định giống như tên của kèo bóng đá c1 SQL được xác định.
Cách lịch sử để chỉ định các phần tùy chọn của thông tin về kèo bóng đá c1. 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à kèo bóng đá c1 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 31.3để tiếp tục thông tin về kèo bóng đá c1 viết.
toàn bộSQLLoại cú pháp là được phép cho các đối số đầu vào và giá trị trả về. Tuy nhiên, kèo bóng đá c1 số Chi tiết về đặc tả loại (ví dụ: trường chính xác cho kiểuSố) là trách nhiệm của thực hiện kèo bóng đá c1 cơ bản và bị nuốt một cách âm thầm (tức là, không được công nhận hoặc thi hành) bởiTạo kèo bóng đá c1lệnh.
PostgreSQLcho phép kèo bóng đá c1quá tải; nghĩa là, cùng một tên có thể được sử dụng cho một số kèo bóng đá c1 khác nhau miễn là chúng có Các loại đối số khác biệt. Tuy nhiên, tên C của tất cả các kèo bóng đá c1 Phải khác nhau, vì vậy bạn phải cung cấp các kèo bóng đá c1 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 kèo bóng đá c1cuộc gọi Tham khảo cùng kèo bóng đá c1 tệp đối tượng, tệp chỉ được tải kèo bóng đá c1 lần. ĐẾN dỡ và tải lại tệp (có lẽ trong quá trình phát triển), sử dụngloadlệnh.
Sử dụngtỷ lệ kèo bóng đáĐể xóa các kèo bóng đá c1 do người dùng xác định.
Thường rất hữu ích khi sử dụng trích dẫn đô la (xemPhần 4.1.2.2) để viết chuỗi định nghĩa hàm, thay vì bình thường Cú pháp trích dẫn đơn. Không có báo giá đô la, bất kỳ trích dẫn nào hoặc Backslashes trong định nghĩa kèo bóng đá c1 phải được thoát khỏi nhân đôi chúng.
Để có thể xác định kèo bóng đá c1, người dùng phải có24098_24105Đặc quyền trên ngôn ngữ.
Đây là kèo bóng đá c1 ví dụ tầm thường để giúp bạn bắt đầu. Để biết thêm thông tin và ví dụ, xemPostgreSQL:.
Tạo kèo bóng đá c1 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:
Tạo hoặc thay thế kèo bóng đá c1 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;
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 kèo bóng đá c1 không thể bị lạm dụng. Vì bảo vệ,search_pathnên được Đặt để loại trừ bất kỳ lược đồ nào có thể ghi được bởi người dùng không tin cậy. Cái này Ngăn chặn người dùng độc hại tạo ra các đối tượng che dấu đối tượng được sử dụng bởi kèo bóng đá c1. Đặc biệt quan trọng trong vấn đề này là Lược đồ bàn tạm thời, được tìm kiếm đầu tiên theo mặc định, và thường có thể viết bởi bất cứ ai. Một sự sắp xếp an toàn có thể là đã có bằng cách buộc lược đồ tạm thời được tìm kiếm cuối cùng. Để làm cái này, viếtPG_TEMPlà mục cuối cùng trongsearch_path. Hàm này minh họa Cách sử dụng an toàn:
25946_26869