Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 42. kèo bóng đá hom nay - Ngôn ngữ thủ tục Python | NEXT |
Các chức năng trong kèo bóng đá hom nay được khai báo thông qua tiêu chuẩntạo chức năngCú pháp:
tạo chức năngfuncname(List arging-list) Trả vềReturn-Typenhư $$ # kèo bóng đá hom nay chức năng cơ thể $$ ngôn ngữ plpythonu;
Cơ thể của một kèo bóng đá hom nay chỉ đơn giản là một tập lệnh Python. Khi chức năng được gọi, các đối số của nó được thông qua như các yếu tố của danh sáchargs; Các đối số được đặt tên cũng là được truyền như các biến thông thường cho tập lệnh kèo bóng đá hom nay. Sử dụng tên Đối số thường dễ đọc hơn. Kết quả được trả lại từ Mã kèo bóng đá hom nay theo cách thông thường, vớireturnhoặcNăng suất(trong trường hợp của một câu lệnh kết quả). Nếu bạn không cung cấp giá trị trả lại, kèo bóng đá hom nay trả về mặc địnhKhông. kèo bóng đá hom naydịch kèo bóng đá hom nay'sKhôngvào giá trị null SQL.
Ví dụ: một kèo bóng đá hom nay để trả về hai số nguyên lớn hơn có thể được định nghĩa là:
Tạo chức năng pymax (A Integer, B Integer) Trả về số nguyên Như $$ Nếu a b: trả lại a trả lại b $$ ngôn ngữ plpythonu;
Mã Python được đưa ra dưới dạng phần thân của kèo bóng đá hom nay Định nghĩa được chuyển thành kèo bóng đá hom nay Python. Ví dụ, Các kết quả trên trong:
def __plpython_procedure_pymax_23456 (): Nếu a b: trả lại a trả lại b
Giả sử 23456 là OID được gán cho kèo bóng đá hom nay củaPostgreSQL.
Các đối số được đặt làm biến toàn cầu. Vì của Quy tắc phạm vi của Python, điều này có hậu quả tinh tế là Biến đối số không thể được chỉ định lại bên trong kèo bóng đá hom nay Giá trị của một biểu thức liên quan đến chính tên biến, Trừ khi biến được điều chỉnh lại là toàn cầu trong khối. Vì Ví dụ, những điều sau sẽ không hoạt động:
Tạo chức năng pystrip (văn bản x) Trả về văn bản Như $$ x = x.strip () # lỗi trả lại x $$ ngôn ngữ plpythonu;
vì gán choxlàm choxMột biến cục bộ cho toàn bộ khối, và vì vậyxỞ phía bên phải kèo bóng đá hom nay Nhiệm vụ đề cập đến biến cục bộ chưa được chỉ địnhx, không phải tham số chức năng kèo bóng đá hom nay. Sử dụngtoàn cầuTuyên bố, điều này có thể là Được tạo ra để làm việc:
Tạo chức năng pystrip (x văn bản) Trả về văn bản Như $$ Toàn cầu x x = x.strip () # ok ngay bây giờ trả lại x $$ ngôn ngữ plpythonu;
Nhưng nên không dựa vào chi tiết triển khai này của kèo bóng đá hom nay. Tốt hơn là coi các tham số chức năng là chỉ đọc.