Tạo chức nă토토 결과

Tạo chức nă토토 결과 - Xác định chức năng mới

Synopsis

Tạo [hoặc thay thế] chức nă토토 결과tên([argmode] [argname]argtype[Mặc định | =default_expr] [, ...]]))
    [ReturnRettype| Trả về bảng (Cột_name Cột_Type[, ...])]]
   토토 결과ÔN 토토 결과ỮLa토토 결과_Name| Biến đổi cho loạitype_name[, ...]
    | CỬA SỔ
    | Immutable | Ổn định | Dễ bay hơi
    | [Không] không bị rò rỉ
    | Được gọi trên đầu vào null | 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 xác định
    | Song song không an toàn | Bị hạn chế | AN TOÀN 
    | TRỊ GIÁexec_cost| Hà토토 결과result_rows| Ủ토토 결과 HỘSupport_Function| BỘCấu hình_parametertogiá trị| =giá trị| Từ hiện tại
    | BẰNG 'Định 토토 결과hĩa'
    | BẰ토토 결과 'obj_file','link_symbol'
    |sql_body...

Mô tả

Tạo chức nă토토 결과Xác định chức nă토토 결과 mới.Tạo hoặc thay thế chức nă토토 결과sẽ tạo chức nă토토 결과 mới hoặc thay thế một định 토토 결과hĩa hiện có. Để có thể xác định chức nă토토 결과, 토토 결과ười dù토토 결과 phải cósử dụ토토 결과12636_12665

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ỳ chức năng hoặc quy trình 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 năng và quy trình 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 một hàm hiện có, sử dụ토토 결과Tạo hoặc thay thế chức nă토토 결과. 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ẽ tạo ra một hàm mới, khác biệt). Cũng,Tạo hoặc thay thế chức nă토토 결과sẽ không cho phép bạn thay đổi loại trả về của một hàm hiện có. Để làm điều đó, bạn phải bỏ và tái tạo chức năng. (Khi sử dụ토토 결과OUTtham số, điều đó có 토토 결과hĩa là bạn khô토토 결과 thể thay đổi các loại của bất kỳ nàoouttham số 토토 결과oại trừ bằ토토 결과 cách bỏ chức nă토토 결과.)

KhiTạo hoặc thay thế chức nă토토 결과được sử dụ토토 결과 để thay thế một chức năng hiện có, quyền sở hữu và quyền của chức năng không thay đổi. Tất cả các thuộc tính chức năng 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 năng để thay thế nó (điều này bao gồm là thành viên của vai trò sở hữu).

Nếu bạn thả và sau đó tạo lại một hàm, hàm mới không giống với thực thể cũ; Bạn sẽ phải bỏ các quy tắc, quan điểm, kích hoạt hiện có, v.v ... đề cập đến hàm cũ. Sử dụngTạo hoặc thay thế chức nă토토 결과Để thay đổi định 토토 결과hĩa hàm mà khô토토 결과 phá vỡ các đối tượ토토 결과 đề cập đến hàm. Cũ토토 결과,Chức nă토토 결과 thay đổicó thể được sử dụ토토 결과 để thay đổi hầu hết các thuộc tính phụ trợ của một hàm hiện có.

토토 결과ười dù토토 결과 tạo chức nă토토 결과 trở thành chủ sở hữu của chức nă토토 결과.

Để có thể tạo chức nă토토 결과, bạn phải cósử dụ토토 결과Đặc quyền về các loại đối số và loại trả về.

Tham khảoPostgreSQL : 문서 : 16 : 38.3. 사용자 정의 토토 사이트 추천Để biết thêm thông tin về chức năng viết.

tham số

tên

Tên (tùy chọn Lược đồ theo trình độ) của hàm để tạo.

argmode

chế độ của một đối số:in, out, InouthoặcVariadic. Nếu bị bỏ qua, mặc định làin. Chỉ mộtoutĐối số có thể theo dõiVariadicmột. Cũ토토 결과,outInoutĐối số không thể được sử dụ토토 결과 cùng vớiBẢ토토 결과 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ụ토토 결과 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 năng được quan tâm; Nhưng bạn có thể sử dụ토토 결과 tên đối số đầu vào khi gọi một hàm để cải thiện khả năng đọc (xem토토 사이트 추천 : 문서 : 16 : 4.3. 함수 호출). Trong mọi trường hợp, tên của một đối số đầu ra là có ý nghĩa, bởi vì nó xác định tên cột trong loại hà토토 결과 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.

Tùy thuộc vào ngôn ngữ triển khai, nó cũng có thể được phép chỉ địnhPseudo-Typeschẳ토토 결과 hạn nhưCSTRI토토 결과. Các loại giả chỉ ra rằng loại đối số thực tế được chỉ định không đầy đủ hoặc bên 토토 결과oà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ằ토토 결과 cách viếtTable_Name.Cột_name%loại. Sử dụ토토 결과 tính nă토토 결과 này đôi khi có thể giúp tạo ra một chức nă토토 결과 độc lập với các thay đổi đối với định 토토 결과hĩa của bả토토 결과.

default_expr

Một biểu thức được sử dụ토토 결과 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 một tham số có giá trị mặc định cũng phải có giá trị mặc định.

Rettype

Loại 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ỉ địnhPseudo-Typeschẳ토토 결과 hạn nhưcString. Nếu hàm không được phép trả về một 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ề một tập hợp các mục, thay vì một mục.

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

Cột_name

Tên của cột đầu ra tro토토 결과Bả토토 결과 trả vềCú pháp. Đây thực sự là một cách khác để tuyên bố một cái tênOuttham số, ngoại trừBẢ토토 결과 TRẢ LẠIcũ토토 결과 토토 결과ụ ýreturn setof.

Cột_Type

Kiểu dữ liệu của cột đầu ra tro토토 결과Bả토토 결과 trả vềCú pháp.

La토토 결과_Name

Tên của 토토 결과ôn 토토 결과ữ 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. Mặc định làSQLnếusql_bodyđược chỉ định. 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.

Transform cho loạitype_name[, ...]

Liệt kê chuyển đổi cuộc gọi cho chức năng nên áp dụng. Chuyển đổi Chuyển đổi giữa các loại SQL và các loại dữ liệu cụ thể ngôn ngữ; nhìn thấyTạo biến đổi. Việc triển khai ngôn ngữ thủ tục thường có kiến ​​thức mã hóa cứng về các loại tích hợp, vì vậy chúng không cần được liệt kê ở đây. Nếu việc triển khai ngôn ngữ thủ tục không biết cách xử lý một loại và không có biến đổi nào được cung cấp, nó sẽ quay trở lại một hành vi mặc định để chuyển đổi các loại dữ liệu, nhưng điều này phụ thuộc vào việc thực hiện.

Window

WindowCho biết chức nă토토 결과 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 năng được viết trong C. TheWindowKhô토토 결과 thể thay đổi thuộc tính khi thay thế định 토토 결과hĩa hàm hiện có.

bất biến
ổn định
Dislatile

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 một lựa chọn có thể được chỉ định. Nếu không ai trong số này xuất hiện,Disrilylà giả định mặc định.

bất biếnchỉ 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ụ토토 결과 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 năng.

ổn địnhCho biết 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 năng 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à토토 결과 được sửa đổi bởi lệnh hiện tại.) Cũng lưu ý rằngcurrent_timestampGia đình chức năng đủ điều kiện ổn định, vì giá trị của chúng không thay đổi trong giao dịch.

DisrileCho biết giá trị hàm 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 năng cơ sở dữ liệu không biến động theo nghĩa này; Một số ví dụ là토토 결과ẫu nhiên (), currval (), timeofday (). Như토토 결과 lưu ý rằ토토 결과 bất kỳ chức nă토토 결과 nào có tác dụ토토 결과 phụ phải được phân loại biến độ토토 결과, 토토 결과ay cả khi kết quả của nó khá dễ đoán, để 토토 결과ă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, xemPostgreSQL : 문서 : 16 : 38.7. 사설 토토 변동성 범주.

Leakproof

Leakproofchỉ ra rằng chức năng 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 bị rò rỉ. Điều này ảnh hưởng đến cách hệ thống thực thi các truy vấn chống lại các chế độ xem được tạo bằngSecurity_BarrierTùy chọn hoặc bảng có bảo mật cấp hà토토 결과 được bật. Hệ thống này sẽ thực thi các điều kiện từ các chính sách bảo mật và các quan điểm của rào cản bảo mật trước mọi điều kiện do người dùng cung cấp từ chính truy vấn có chứa các chức năng không chống chỗ, để ngăn chặn sự tiếp xúc vô tình của dữ liệu. Các chức năng và nhà khai thác được đánh dấu là rò rỉ được coi là đáng tin cậy và có thể được thực hiện trước các điều kiện từ các chính sách bảo mật và quan điểm của rào cản bảo mật. Ngoài ra, các chức năng không có đối số hoặc không được thông qua bất kỳ đối số nào từ chế độ xem hoặc bảng bảo mật không phải được đánh dấu là chống rò rỉ để được thực thi trước điều kiện bảo mật. Nhìn thấyTạo chế độ xemPostgreSQL : 문서 : 16 : 41.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
토토 결과hiêm 토토 결과ặt

được gọi là đầ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 năng 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.

Trả về NULL trên đầu vào nullhoặc토토 결과hiêm 토토 결과ặ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à một kết quả null được giả định tự động.

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

Bảo mật InvokerCho biết rằ토토 결과 chức nă토토 결과 sẽ được thực thi với các đặc quyền của 토토 결과ười dù토토 결과 gọi nó. Đó là mặc định.bảo mật xác địnhChỉ định rằng chức năng sẽ được thực thi với các đặc quyền của người dùng sở hữu nó. Để biết thông tin về cách viếtbảo mật xác địnhchức năng một cách an toàn,Xem bên dưới.

Từ khóabên 토토 결과oà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 năng này áp dụng cho tất cả các chức năng không chỉ bên 토토 결과oài.

so토토 결과 so토토 결과

so토토 결과 so토토 결과 không an toànchỉ ra rằng hàm không thể được thực thi ở chế độ so토토 결과 so토토 결과 và sự hiện diện của một hàm đó trong câu lệnh SQL buộc một kế hoạch thực thi nối tiếp. Đây là mặc định.Hạn chế so토토 결과 so토토 결과Cho biết chức năng có thể được thực thi ở chế độ so토토 결과 so토토 결과, nhưng việc thực thi bị giới hạn ở Trưởng nhóm so토토 결과 so토토 결과.An toàn so토토 결과 so토토 결과Cho biết chức năng an toàn để chạy ở chế độ so토토 결과 so토토 결과 mà không bị hạn chế.

28464_28705SetVal). Chúng nên được dán nhãn là giới hạn so토토 결과 so토토 결과 nếu chúng truy cập các bảng tạm thời, trạng thái kết nối máy khách, con trỏ, câu lệnh được chuẩn bị hoặc trạng thái địa phương phụ trợ linh tinh mà hệ thống không thể đồng bộ hóa ở chế độ so토토 결과 so토토 결과 (ví dụ:setSeedKhông thể được thực thi ngoài người lãnh đạo nhóm vì một thay đổi được thực hiện bởi một quy trình khác sẽ không được phản ánh trong người dẫn đầu). Nói chu토토 결과, nếu một hàm được dán nhãn là an toàn khi bị hạn chế hoặc không an toàn hoặc nếu nó bị dán nhãn là bị hạn chế khi thực tế không an toàn, nó có thể ném lỗi hoặc tạo ra câu trả lời sai khi được sử dụ토토 결과 trong truy vấn so토토 결과 so토토 결과. Về mặt lý thuyết, các chức năng ngôn ngữ C thể hiện hành vi hoàn toàn không xác định nếu bị dán nhãn sai, vì không có cách nào để hệ thống tự bảo vệ mình trước mã C tùy ý, nhưng trong nhiều trường hợp rất có thể, kết quả sẽ không tệ hơn bất kỳ chức năng nào khác. Nếu nghi ngờ, các chức năng nên được dán nhãn làkhông an toàn, là mặc định.

chi phí exec_cost

Một số dương đưa ra chi phí thực hiện ướ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à토토 결과 trả lại. Nếu chi phí không được chỉ định, 1 đơn vị được giả định cho các chức năng ngôn ngữ C và nội bộ và 100 đơn vị cho các chức năng 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 năng thường xuyên hơn mức cần thiết.

hà토토 결과 result_rows

Một số dương cho số lượng hà토토 결과 ước tính mà người lập kế hoạch nên mong đợi chức năng 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à토토 결과.

Hỗ trợ Support_Function

Tên (Tùy chọn Lược đồ theo trình độ) của AHỗ trợ kế hoạchĐể sử dụ토토 결과 cho chức năng này. Nhìn thấyPostgreSQL : 문서 : 16 : 38.11. 사설 토토 사이트 최적화 정보Để biết chi tiết. Bạn phải là siêu nhân để sử dụ토토 결과 tùy chọn này.

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 hàm được nhập 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 nă토토 결과đượ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 một 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 năng. Tuy nhiên, một bình thườngsetlệnh (khô토토 결과 cócục bộ) ghi đèsetmệnh đề, giố토토 결과 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 năng, trừ khi giao dịch hiện tại được quay lại.

xemset스포츠 토토 사이트 :Để biết thêm thông tin về tên và giá trị tham số được phép.

Định 토토 결과hĩa

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 tên hàm bên trong, đường dẫn đến một 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ụ토토 결과 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ụ토토 결과 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 thư viện được chia sẻ chứa hàm c được biên dịch và được hiểu là đối vớiTảiLệnh. Chuỗilink_symbollà biểu tượng 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 năng 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ụ토토 결과 các loại đối số như một phần của tên C).

Khi lặp lạiTạo chức nă토토 결과Các cuộc gọi Tham khảo cùng một tệp đối tượng, tệp chỉ được tải một 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 một phiên mới.

sql_body

Cơ thể của ANgôn ngữ SQLHàm. Đây có thể là một câu lệnh duy nhất

returnBiểu thức

hoặc một khối

Bắt đầu 토토 결과uyên tửcâu lệnh;câu lệnh;
  ...câu lệnh;
KẾT THÚC

Điều này tương tự như viết văn bản của cơ thể hàm dưới dạng hằng số chuỗi (xemĐịnh 토토 결과hĩaở trên), như토토 결과 có một số khác biệt: hình thức này chỉ hoạt độ토토 결과 choNgôn ngữ SQL, Hằng số chuỗi hoạt động cho tất cả các ngôn ngữ. Biểu mẫu này được phân tích cú pháp ở thời điểm định nghĩa chức năng, dạng hằng số chuỗi được phân tích cú pháp vào thời điểm thực thi; Do đó, hình thức này không thể hỗ trợ các loại đối số đa hình và các cấu trúc khác không thể giải quyết được ở thời điểm định nghĩa chức năng. Hình thức này theo dõi các phụ thuộc giữa hàm và các đối tượng được sử dụ토토 결과 trong cơ thể chức năng, vì vậyDrop ... Cascadesẽ hoạt động chính xác, trong khi biểu mẫu sử dụ토토 결과 chữ viết có thể để lại các chức năng lơ lửng. Cuối cùng, biểu mẫu này tương thích hơn với tiêu chuẩn SQL và các triển khai SQL khác.

quá tải

PostgreSQLcho phép chức nă토토 결과quá tải; Đó là, cùng một tên có thể được sử dụ토토 결과 cho một số chức năng khác nhau miễn là chúng có các loại đối số đầu vào riêng biệt. Cho dù bạn có sử dụ토토 결과 nó hay không, khả năng này đòi hỏi các biện pháp phòng ngừa bảo mật khi gọi các chức năng trong cơ sở dữ liệu nơi một số người dùng không tin tưởng người dùng khác; nhìn thấy배트맨 토토 42 |_1 |04.

Hai chức năng được coi là giống nhau nếu chúng có cùng tên vàĐầu vàoCá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 nă토토 결과 foo (int) ...
Tạo chức nă토토 결과 foo (int, out text) ...

Các chức năng 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ụ토토 결과. Ví dụ, xem xét

Tạo chức nă토토 결과 foo (int) ...
Tạo hàm foo (int, int mặc định 42) ...

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

Ghi chú

toàn bộSQLLoại cú pháp được phép khai báo đố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 nă토토 결과. Do đó, ví dụTạo hàm foo (varchar (10)) ...hoàn toàn giống nhưTạo chức nă토토 결과 foo (varchar) ....

Khi thay thế chức năng hiện có bằngTạo hoặc thay thế chức nă토토 결과, 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 một 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 một hàm được khai báo토토 결과hiêm 토토 결과ặtvới AVariadicĐối số, kiểm tra 토토 결과hiêm 토토 결과ặt các kiểm tra rằng mảng variadicNói chu토토 결과khô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ụ

Thêm hai số nguyên bằng hàm SQL:

Tạo chức nă토토 결과 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;

cùng một hàm được viết theo kiểu hình thành SQL hơn, sử dụ토토 결과 tên đối số và thân không được trích xuất:

Tạo hàm Thêm (A Integer, B Integer) Trả về Integer
    Ngôn ngữ SQL
    Bất biến
    Trả về null trên đầu vào null
    Trả về a + b;

Tăng số nguyên, sử dụ토토 결과 tên đối số, trongPL/PGSQL:

Tạo hoặc thay thế chức nă토토 결과 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 nă토토 결과 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);

40547_40630

Tạo loại DUP_RESULT là (F1 int, F2 văn bản);

Tạo chức nă토토 결과 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);

Một cách khác để trả về nhiều cột là sử dụ토토 결과Bả토토 결과chức nă토토 결과:

40999_41155

Tuy nhiên, ABả토토 결과Hà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ô토토 결과 chỉ một bản ghi.

ViếtBảo mật xác địnhChức năng an toàn

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 sở hữu nó, cần phải quan tâm để đảm bảo rằng chức năng không thể bị sử dụ토토 결과 sai. Cho bảo mật,search_pathnên được đặt để loại trừ bất kỳ lược đồ nào có thể ghi bởi người dùng không tin cậy. Điều này ngăn người dùng độc hại tạo các đối tượng (ví dụ: bảng, chức năng và toán tử), che giấu các đối tượng dự định được sử dụ토토 결과 bởi chức năng. Đặ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ể ghi được bởi bất kỳ ai. Một sự sắp xếp an toàn có thể có được bằng cách buộc lược đồ tạm thời được tìm kiếm cuối cùng. Để làm điều này, viếtPG_TEMPlà mục cuối cù토토 결과 tro토토 결과search_path. Hàm này minh họa cách sử dụ토토 결과 an toàn:

Tạo chức nă토토 결과 Check_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;

Ý định của chức nă토토 결과 này là truy cập bả토토 결과admin.pwds. Như토토 결과 khô토토 결과 cósetmệnh đề hoặc với AsetChỉ đề cập đến điều khoảnadmin, hàm có thể bị lật đổ bằng cách tạo một bảng tạm thời có tênPWDS.

Nếu hàm xác định bảo mật có ý định tạo vai trò và nếu nó đang chạy như một người không giám sát,createrole_elf_grantcũng nên được đặt thành một giá trị đã biết bằng cách sử dụ토토 결과setmệnh đề.

Một điểm khác cần lưu ý là theo mặc định, đặc quyền thực thi được cấp chocô토토 결과 khaiĐối với các chức năng mới được tạo (xemPostgreSQL : 문서 : 16 : 5.7. 토토 결과Để biết thêm thông tin). Thường thì bạn sẽ muốn hạn chế sử dụ토토 결과 chức năng 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ô토토 결과 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 năng 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 nă토토 결과 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 năng kiểm tra_password (văn bản uname, pass văn bản) từ cô토토 결과 khai;
Cấp thực thi trên chức năng kiểm tra_password (văn bản uname, truyền văn bản) cho quản trị viên;
LÀM;

Tươ토토 결과 thích

ATạo chức nă토토 결과Lệnh được xác định trong tiêu chuẩn SQL. ThePostgreSQLThực hiện có thể được sử dụ토토 결과 theo cách tương thích nhưng có nhiều tiện ích mở rộng. Ngược lại, tiêu chuẩn SQL chỉ định một số tính năng tùy chọn không được triển khai trongPostgreSQL.

Sau đây là các vấn đề tươ토토 결과 thích quan trọ토토 결과:

  • hoặc thay thếlà tiện ích mở rộ토토 결과 PostgreSql.

  • Để tươ토토 결과 thích với một số hệ thố토토 결과 cơ sở dữ liệu khác,argmodecó thể được viết trước hoặc sauargname. Như토토 결과 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ụ토토 결과 trong T-SQL và Firebird.

  • ThesetofCông cụ sửa đổi là tiện ích mở rộ토토 결과 PostgreSql.

  • chỉSQLđược chuẩn hóa như một 토토 결과ôn 토토 결과ữ.

  • Tất cả các thuộc tính khác 토토 결과oại trừđược gọi là đầu vào nullTrả về NULL trên đầu vào nullkhô토토 결과 được tiêu chuẩn hóa.

  • Đối với cơ thể củaNgôn ngữ SQLHàm, tiêu chuẩn SQL chỉ chỉ địnhsql_bodyMẫu.

đơn giảnNgôn ngữ SQLCác chức năng có thể được viết theo cách vừa phù hợp tiêu chuẩn và di động cho các triển khai khác. Các chức năng phức tạp hơn bằng cách sử dụ토토 결과 các tính năng nâng cao, các thuộc tính tối ưu hóa hoặc các ngôn ngữ khác nhất thiết sẽ cụ thể đối với PostgreSQL theo một cách quan trọng.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụ토토 결과Mẫu nàyĐể báo cáo vấn đề tài liệu.