Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển: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 một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Tạo kèo bóng đá pháp ngữ

Tạo kèo bóng đá pháp ngữ - Xác định kèo bóng đá pháp ngữ thủ tục mới

Synopsis

Tạo [hoặc thay thế] [Thủ tục] kèo bóng đá pháp ngữtênTạo [hoặc thay thế] [đáng tin cậy] [Thủ tục] kèo bóng đá pháp ngữtênHandlercall_handler[Inlineinline_handler] [Trình xác nhậnValfunction]

Mô tả

Tạo kèo bóng đá pháp ngữĐăng ký một kèo bóng đá pháp ngữ thủ tục mới với APostgreSQLCơ sở dữ liệu. Sau đó, các chức năng và quy trình có thể được xác định trong kèo bóng đá pháp ngữ mới này.

Lưu ý

kể từPostgreSQL9.1, Hầu hết các kèo bóng đá pháp ngữ thủ tục đã được tạo thànhTiện ích mở rộngHồivà do đó nên được cài đặt vớikèo bóng đá pháp tiện ích mở rộngkhôngTạo kèo bóng đá pháp ngữ. Sử dụng trực tiếpTạo kèo bóng đá pháp ngữBây giờ nên giới hạn trong các tập lệnh cài đặt mở rộng. Nếu bạn cóHồiBarekèo bóng đá pháp ngữ trong cơ sở dữ liệu của bạn, có lẽ là kết quả của việc nâng cấp, bạn có thể chuyển đổi nó thành tiện ích mở rộng bằng cách sử dụngkèo bóng đá pháp tiện ích mở rộngLangnameTừ chưa đóng gói.

Tạo kèo bóng đá pháp ngữliên kết hiệu quả tên kèo bóng đá pháp ngữ với (các) hàm xử lý chịu trách nhiệm thực thi các chức năng được viết bằng kèo bóng đá pháp ngữ. Tham khảoChương 56Để biết thêm thông tin về người xử lý kèo bóng đá pháp ngữ.

Có hai dạng củaTạo kèo bóng đá pháp ngữlệnh. Trong mẫu đầu tiên, người dùng chỉ cung cấp tên của kèo bóng đá pháp ngữ mong muốn vàPostgreSQLMáy chủ tham khảo13115_13130Danh mục hệ thống để xác định các tham số chính xác. Ở dạng thứ hai, người dùng cung cấp các tham số kèo bóng đá pháp ngữ cùng với tên kèo bóng đá pháp ngữ.pg_pltemplate, nhưng cách tiếp cận này được coi là lỗi thời.

Khi máy chủ tìm thấy một mục nhập trongpg_pltemplateDanh mục cho tên kèo bóng đá pháp ngữ đã cho, nó sẽ sử dụng dữ liệu danh mục ngay cả khi lệnh bao gồm các tham số kèo bóng đá pháp ngữ. Hành vi này đơn giản hóa việc tải các tệp kết xuất cũ, có khả năng chứa thông tin lỗi thời về các chức năng hỗ trợ kèo bóng đá pháp ngữ.

Thông thường, người dùng phải cóPostgreSQLĐặc quyền của Superuser để đăng ký một kèo bóng đá pháp ngữ mới. Tuy nhiên, chủ sở hữu của cơ sở dữ liệu có thể đăng ký một kèo bóng đá pháp ngữ mới trong cơ sở dữ liệu đó nếu kèo bóng đá pháp ngữ được liệt kê trongpg_pltemplateDanh mục và được đánh dấu là cho phép được kèo bóng đá pháp bởi các chủ sở hữu cơ sở dữ liệu (TMPLDBacreatelà đúng). Mặc định là các kèo bóng đá pháp ngữ đáng tin cậy có thể được tạo bởi các chủ sở hữu cơ sở dữ liệu, nhưng điều này có thể được điều chỉnh bởi các siêu người dùng bằng cách sửa đổi nội dung củapg_pltemplate. Người tạo kèo bóng đá pháp ngữ trở thành chủ sở hữu của nó và sau đó có thể bỏ nó, đổi tên nó hoặc gán nó cho chủ sở hữu mới.

Tạo hoặc thay thế kèo bóng đá pháp ngữsẽ tạo một kèo bóng đá pháp ngữ mới hoặc thay thế một định nghĩa hiện có. Nếu kèo bóng đá pháp ngữ đã tồn tại, các tham số của nó được cập nhật theo các giá trị được chỉ định hoặc lấy từPG_PLTEMPLATE, nhưng cài đặt quyền sở hữu và quyền của kèo bóng đá pháp ngữ không thay đổi và bất kỳ chức năng hiện có nào được viết bằng kèo bóng đá pháp ngữ được cho là vẫn còn hiệu lực. Ngoài các yêu cầu đặc quyền thông thường để tạo kèo bóng đá pháp ngữ, người dùng phải là siêu người dùng hoặc chủ sở hữu kèo bóng đá pháp ngữ hiện có.thay thếTrường hợp chủ yếu được sử dụng để đảm bảo rằng kèo bóng đá pháp ngữ tồn tại. Nếu kèo bóng đá pháp ngữ cópg_pltemplatemục sau đóthay thếSẽ không thực sự thay đổi bất cứ điều gì về một định nghĩa hiện có, ngoại trừ trong trường hợp bất thường trong đópg_pltemplatemục đã được sửa đổi kể từ khi kèo bóng đá pháp ngữ được tạo.

tham số

Trusted

TrustedChỉ định rằng kèo bóng đá pháp ngữ không cấp quyền truy cập vào dữ liệu mà người dùng sẽ không có. Nếu từ khóa này bị bỏ qua khi đăng ký kèo bóng đá pháp ngữ, chỉ người dùng cóPostgreSQLĐặc quyền Superuser có thể sử dụng kèo bóng đá pháp ngữ này để tạo các chức năng mới.

Thủ tục

Đây là một từ tiếng ồn.

tên

Tên của kèo bóng đá pháp ngữ thủ tục mới. Tên phải là duy nhất trong số các kèo bóng đá pháp ngữ trong cơ sở dữ liệu.

Để tương thích ngược, tên có thể được đặt trong các trích dẫn đơn.

Handler call_handler

call_handlerlà tên của hàm đã đăng ký trước đó sẽ được gọi để thực hiện các chức năng của kèo bóng đá pháp ngữ thủ tục. Trình xử lý cuộc gọi cho một kèo bóng đá pháp ngữ thủ tục phải được viết bằng kèo bóng đá pháp ngữ được biên dịch như C với quy ước gọi phiên bản 1 và được đăng ký vớiPostgreSQLLà một hàm không có đối số và trả lạikèo bóng đá pháp_handlerLoại, loại trình giữ chỗ được sử dụng đơn giản để xác định chức năng như một trình xử lý cuộc gọi.

Inline inline_handler

inline_handlerlà tên của hàm đã đăng ký trước đó sẽ được gọi để thực thi một khối mã ẩn danh (doLệnh) trong kèo bóng đá pháp ngữ này. Nếu khônginline_handlerHàm được chỉ định, kèo bóng đá pháp ngữ không hỗ trợ các khối mã ẩn danh. Hàm xử lý phải lấy một đối số của loạiNội bộ, sẽ làdoBiểu diễn nội bộ của lệnh và nó thường sẽ trả vềvoid. Giá trị trả về của người xử lý bị bỏ qua.

Trình xác nhận Valfunction

Valfunctionlà tên của một hàm đã đăng ký trước đó sẽ được gọi là khi một hàm mới trong kèo bóng đá pháp ngữ được tạo, để xác thực chức năng mới. Nếu không có chức năng xác thực được chỉ định, thì một hàm mới sẽ không được kiểm tra khi nó được tạo.oid, sẽ là oid của chức năng được kèo bóng đá pháp và thường sẽ trả vềvoid.

Một hàm xác thực thường kiểm tra cơ thể chức năng cho tính chính xác của cú pháp, nhưng nó cũng có thể xem xét các thuộc tính khác của hàm, ví dụ nếu kèo bóng đá pháp ngữ không thể xử lý các loại đối số nhất định. Để báo hiệu một lỗi, hàm xác thực sẽ sử dụngEREPORT ()Hàm. Giá trị trả về của hàm bị bỏ qua.

Theđáng tin cậyTùy chọn và tên hàm hỗ trợ bị bỏ qua nếu máy chủ có mục nhập cho tên kèo bóng đá pháp ngữ được chỉ định trongpg_pltemplate.

ghi chú

sử dụngkèo bóng đá pháp ngữ thảđể bỏ các kèo bóng đá pháp ngữ thủ tục.

Danh mục hệ thốngPG_L Language(xemPhần 52,29) Hồ sơ thông tin về các kèo bóng đá pháp ngữ hiện được cài đặt. Ngoài ra,PSQLlệnh\ DLliệt kê các kèo bóng đá pháp ngữ đã cài đặt.

Để tạo các chức năng trong kèo bóng đá pháp ngữ thủ tục, người dùng phải cósử dụngĐặc quyền cho kèo bóng đá pháp ngữ. Theo mặc định,sử dụngđược cấp chocông khai(tức là mọi người) cho các kèo bóng đá pháp ngữ đáng tin cậy. Điều này có thể bị thu hồi nếu muốn.

kèo bóng đá pháp ngữ thủ tục là địa phương cho các cơ sở dữ liệu riêng lẻ. Tuy nhiên, một kèo bóng đá pháp ngữ có thể được cài đặt vàoTemplate1Cơ sở dữ liệu, sẽ khiến nó có sẵn tự động trong tất cả các cơ sở dữ liệu được kèo bóng đá pháp ra sau đó.

Hàm người xử lý cuộc gọi, hàm xử lý nội tuyến (nếu có) và hàm xác thực (nếu có) phải tồn tại nếu máy chủ không có mục nhập cho kèo bóng đá pháp ngữ trongpg_pltemplate. Nhưng khi có một mục, các chức năng không cần tồn tại;Tạo kèo bóng đá pháp ngữThất bại, nếu thư viện chia sẻ thực hiện kèo bóng đá pháp ngữ không có sẵn trong cài đặt.)

inPostgreSQLPhiên bản trước 7.3, cần phải khai báo các chức năng xử lý là trả về loại trình giữ chỗOpaque, thay vìkèo bóng đá pháp_handler. Để hỗ trợ tải các tệp kết xuất cũ,Tạo kèo bóng đá pháp ngữSẽ chấp nhận một hàm được khai báo là trả vềOpaque, nhưng nó sẽ phát hành thông báo và thay đổi loại trả về được khai báo của hàm thànhkèo bóng đá pháp_handler.

Ví dụ

Cách ưa thích để tạo bất kỳ kèo bóng đá pháp ngữ thủ tục tiêu chuẩn nào chỉ là:

Tạo kèo bóng đá pháp ngữ plperl;

Đối với một kèo bóng đá pháp ngữ không được biết trongPG_PLTEMPLATEDanh mục, một chuỗi như thế này là cần thiết:

tạo chức năng plsample_call_handler () trả về kèo bóng đá pháp_handler

Tương thích

Tạo kèo bóng đá pháp ngữlà APostgreSQLphần mở rộng.