PostgreSQL: soi kèo bóng đá | |||
---|---|---|---|
prev | UP | Chương 43. soi kèo bóng đá truoctran - Ngôn ngữ thủ tục Python | NEXT |
Các chức năng trong soi kèo bóng đá truoctran đượ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) Trả vềReturn-Typenhư $$ # soi kèo bóng đá truoctran chức năng cơ thể $$ ngôn ngữ plpythonu;
Cơ thể của một soi kèo bóng đá truoctran chỉ đơn giản là một tập lệnh Python. Khi soi kèo bóng đá truoctran được gọi, các đối số của nó được truyền dưới dạng các phần tử của danh sáchargs; Các đối số được đặt tên cũng được truyền dưới dạng các biến thông thường cho tập lệnh soi kèo bóng đá truoctran. Việc sử dụng các đối số được đặt tên thường dễ đọc hơn. Kết quả được trả về từ mã soi kèo bóng đá truoctran theo cách thông thường, vớireturnhoặcnăng suất(trong trường hợp câu lệnh kết quả). Nếu bạn không cung cấp giá trị trả về, soi kèo bóng đá truoctran trả về mặc địnhKhông. soi kèo bóng đá truoctrandịch soi kèo bóng đá truoctran'sKhôngvào giá trị null SQL.
Ví dụ: một soi kèo bóng đá truoctran để trả về lớn hơn của hai số nguyên có thể được định nghĩa là:
10828_10960
Mã Python được đưa ra dưới dạng phần thân của định nghĩa soi kèo bóng đá truoctran được chuyển thành soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran củaPostgreSQL.
Các đối số được đặt làm biến toàn cầu. Do các quy tắc phạm vi của Python, điều này có hậu quả tinh tế là một biến đối số không thể được gán lại bên trong soi kèo bóng đá truoctran theo 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 xác định lại là toàn cầu trong khối. Ví dụ: những điều sau sẽ không hoạt động:
11723_11836
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 của bài tập đề cập đến một biến cục bộ chưa được chỉ địnhx, không phải tham số chức năng soi kèo bóng đá truoctran. Sử dụngtoàn cầuTuyên bố, điều này có thể được thực hiện để 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 soi kèo bóng đá truoctran. Tốt hơn là coi các tham số chức năng là chỉ đọc.