kèo bóng đá cúp c2 8.2.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 40. kèo bóng đá cúp c2 - Ngôn ngữ thủ tục Python | Chuyển tiếp nhanh | Tiếp theo |
Các chức năng trong kèo bóng đá cúp c2 được khai báo thông qua tiêu chuẩnPostgreSQL: TàiCú pháp:
tạo chức năngfuncName(Liệt trình đối số) Trả vềReturn-Typenhư $$ # kèo bóng đá cúp c2 chức năng cơ thể $$ ngôn ngữ plpythonu;
Cơ thể của một kèo bóng đá cúp c2 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 mảngargs []; 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 đá cúp c2. Kết quả là Được trả về từ mã kèo bóng đá cúp c2 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 set kết quả).
Ví dụ: một kèo bóng đá cúp c2 để 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 đá cúp c2 Định nghĩa được chuyển thành kèo bóng đá cúp c2 Python. Ví dụ, 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 đá cúp c2 củakèo bóng đá cúp c2.
Thekèo bóng đá cúp c2kèo bóng đá cúp c2
tham số có sẵn trong toàn cầuargsDanh sách. TrongPymax
Ví dụ,args [0]chứa bất cứ thứ gì được truyền trong đó là đối số đầu tiên vàargs [1]Chứa đối số thứ hai
giá trị. Ngoài ra, người ta có thể sử dụng kèo bóng đá cúp c2 tham số được đặt tên như thể hiện trong
Ví dụ trên. Việc sử dụng kèo bóng đá cúp c2 tham số được đặt tên thường là nhiều hơn
có thể đọc được.
Nếu giá trị null SQLIS được chuyển cho một kèo bóng đá cúp c2, giá trị đối số sẽ xuất hiện dưới dạngKhôngTrong Python. kèo bóng đá cúp c2 trên Định nghĩa sẽ trả về câu trả lời sai cho đầu vào null. Chúng tôi có thể thêm vàonghiêm ngặtĐịnh nghĩa chức năng để làmkèo bóng đá cúp c2Làm gì đó Hợp lý hơn: Nếu giá trị null được thông qua, kèo bóng đá cúp c2 sẽ không được gọi là tất cả, nhưng sẽ chỉ trả lại một kết quả null tự động. Ngoài ra, chúng tôi có thể kiểm tra các đầu vào null trong cơ thể chức năng:
Tạo chức năng pymax (A Integer, B Integer) Trả về số nguyên Như $$ Nếu (A không có) hoặc (B không phải là không): trả lại không Nếu a b: trả lại a trả lại b $$ ngôn ngữ plpythonu;
Như được hiển thị ở trên, để trả về giá trị null SQL từ kèo bóng đá cúp c2 chức năng, trả về giá trịKhông. Điều này có thể được thực hiện cho dù chức năng có nghiêm ngặt hay không.
Đối số loại tổng hợp được chuyển đến kèo bóng đá cúp c2 như Python ánh xạ. Tên phần tử của ánh xạ là thuộc tính Tên của loại tổng hợp. Nếu một thuộc tính trong hàng đã qua có giá trị null, nó có giá trịKhôngTrong ánh xạ. Đây là một ví dụ:
Tạo nhân viên bảng ( tên văn bản, Số nguyên tiền lương, Số nguyên tuổi ); Tạo chức năng trả tiền quá mức (e nhân viên) Trả lại Boolean Như $$ Nếu E ["Mức lương"] 200000: trả về đúng if (e ["tuổi"] <30) và (e ["tiền lương"] 100000): trả về đúng trả lại sai $$ ngôn ngữ plpythonu;
Có nhiều cách để trả lại các loại hàng hoặc loại tổng hợp từ một chức năng kèo bóng đá cúp c2. Các ví dụ sau đây giả sử chúng ta có:
Tạo loại tên_value là ( tên văn bản, Số nguyên giá trị );
Một kết quả tổng hợp có thể được trả về dưới dạng:
Đối tượng chuỗi được trả về phải có cùng số lượng kèo bóng đá cúp c2 mục là loại kết quả tổng hợp có trường. Mặt hàng với chỉ mục 0 được gán cho trường đầu tiên của Loại tổng hợp, 1 đến thứ hai và vân vân. Ví dụ:
Tạo kèo bóng đá cúp c2 Make_Pair (tên văn bản, Số nguyên giá trị) Trả về tên_value Như $$ Trả về [Tên, Giá trị] # hoặc cách khác, như tuple: return (tên, giá trị) $$ ngôn ngữ plpythonu;
Để trả về SQL NULL cho bất kỳ cột nào, chènKhôngỞ vị trí tương ứng.
Giá trị cho mỗi cột loại kết quả được lấy từ ánh xạ với tên cột là phím. Ví dụ:
Tạo kèo bóng đá cúp c2 Make_Pair (tên văn bản, Số nguyên giá trị) Trả về tên_value Như $$ trả về "name": name, "value": value
Bất kỳ cặp khóa/giá trị từ điển nào cũng bị bỏ qua. Thiếu khóa được coi là lỗi. Để trả lại SQL NULL Giá trị cho bất kỳ cột nào, chènKhôngvới tên cột tương ứng làm khóa.
Điều này hoạt động giống như ánh xạ. Ví dụ:
Tạo kèo bóng đá cúp c2 Make_Pair (tên văn bản, Số nguyên giá trị) Trả về tên_value Như $$ lớp tên_value: def __init__ (tự, n, v): tự.name = n tự self.Value = v trả về tên_value (tên, giá trị) # hoặc đơn giản là Lớp NV: Vượt qua nv.name = tên nv.value = value trả lại nv $$ ngôn ngữ plpythonu;
Nếu bạn không cung cấp giá trị trả lại, kèo bóng đá cúp c2 trả về mặc địnhKhông. kèo bóng đá cúp c2Dịch kèo bóng đá cúp c2'sKhôngvào giá trị null SQL.
Akèo bóng đá cúp c2kèo bóng đá cúp c2 cũng có thể trả về các loại vô hướng hoặc các loại tổng hợp. Có một số cách để đạt được điều này bởi vì đối tượng được trả về được quay nội bộ vào một vòng lặp. Các ví dụ sau đây giả sử chúng ta có tổng hợp kiểu:
Tạo loại lời chào như ( cách văn bản, ai nhắn tin );
Một kết quả đặt có thể được trả về từ A:
Tạo chức năng chào (cách văn bản) Trả về setof chào hỏi Như $$ # Trả về Danh sách chứa Tuple dưới dạng các loại tổng hợp # Tất cả các kết hợp khác cũng hoạt động Return ([How, "World"], [How, "PostgreSQL"], [Làm thế nào, "kèo bóng đá cúp c2"])) $$ ngôn ngữ plpythonu;
Tạo chức năng chào (cách văn bản) Trả về setof chào hỏi Như $$ Nhà sản xuất lớp học: def __init__ (tự, làm thế nào, ai): Self.How = Làm thế nào self.who = ai self.ndx = -1 def __iter__ (tự): tự trả lại DEF NEXT (tự): self.ndx += 1 if self.ndx == len (self.who): Nâng cao sự ngăn chặn Return (Self.How, self.who [self.ndx]) Nhà sản xuất trả lại (How, ["Thế giới", "PostgreSQL", "kèo bóng đá cúp c2"])) $$ ngôn ngữ plpythonu;
Tạo chức năng chào (cách văn bản) Trả về setof chào hỏi Như $$ cho ai trong ["thế giới", "postgresql", "kèo bóng đá cúp c2"]: năng suất (làm thế nào, ai) $$ ngôn ngữ plpythonu;
CẢNH BÁO |
Hiện tại, do kèo bóng đá cúp c2BUG #1483133, Một số phiên bản gỡ lỗi của kèo bóng đá cúp c2 2.4 (được cấu hình và biên dịch với tùy chọn--with-pydebug) được biết đến Để sụp đổkèo bóng đá cúp c2Máy chủ khi sử dụng một trình lặp để trả về một kết quả đã đặt. Không theo dõi Các phiên bản của Fedora 4 chứa lỗi này. Nó không xảy ra trong các phiên bản sản xuất của kèo bóng đá cúp c2 hoặc ON Các phiên bản được vá của fedora 4. |
Từ điển toàn cầuSDcó sẵn Để lưu trữ dữ liệu giữa kèo bóng đá cúp c2 cuộc gọi chức năng. Biến này là riêng tư dữ liệu tĩnh. Từ điển toàn cầuGDIS Dữ liệu công khai, có sẵn cho tất cả các chức năng kèo bóng đá cúp c2 trong một phiên. Sử dụng cẩn thận.
Mỗi chức năng có được môi trường thực thi riêng trong kèo bóng đá cúp c2
Trình thông dịch, để dữ liệu toàn cầu và các đối số chức năng từMyFunc
không có sẵn choMyFunc2
. Ngoại lệ là dữ liệu
trongGDTừ điển, như đã đề cập
bên trên.