Khi nó hóa ra, một phần của việc xác định loại mới là định nghĩa của các kèo bóng đá euro mô tả hành vi của nó. Do đó, trong khi nó là có thể xác định một hàm mới mà không cần xác định một loại mới, đảo ngược là không đúng. Do đó, chúng tôi mô tả cách thêm các kèo bóng đá euro mới ĐẾNPostgresTrước khi mô tả cách để thêm kèo bóng đá euro loại mới.Postgres kèo bóng đá euroCung cấp hai loại kèo bóng đá euro: Các hàm ngôn ngữ truy vấn (kèo bóng đá euro được viết bằngkèo bóng đá eurovà các hàm ngôn ngữ lập trình (kèo bóng đá euro được viết bằng ngôn ngữ lập trình được biên dịch nhưC.) Một trong hai loại kèo bóng đá euro có thể lấy loại cơ sở, một loại tổng hợp hoặc một số kết hợp dưới dạng đối số (tham số). TRONG Ngoài ra, cả hai loại kèo bóng đá euro có thể trả về một loại cơ sở hoặc loại tổng hợp. Nó dễ dàng hơn để xác địnhkèo bóng đá euroCác kèo bóng đá euro, vì vậy chúng tôi sẽ bắt đầu với chúng. Ví dụ Trong phần này cũng có thể được tìm thấy trongfuncs.kèo bóng đá eurovàfuncs.c.
đơn giản nhất có thểkèo bóng đá euroHàm không có đối số và chỉ đơn giản là trả về một loại cơ sở, chẳng hạn nhưINT4:
Tạo hàm một () trả về int4 Như 'chọn 1 là kết quả' ngôn ngữ 'kèo bóng đá euro'; Chọn một () làm câu trả lời; +-------+ | Trả lời | +-------+ | 1 | +-------+
Lưu ý rằng chúng tôi đã xác định danh sách mục tiêu cho kèo bóng đá euro (với kết quả tên), nhưng danh sách mục tiêu của truy vấn đã gọi kèo bóng đá euro vượt qua danh sách mục tiêu của kèo bóng đá euro. Do đó, kết quả là Trả lời được dán nhãn thay vì một.
Nó gần như dễ xác địnhkèo bóng đá euroCác kèo bóng đá euro lấy các loại cơ sở làm đối số. Trong ví dụ dưới đây, Lưu ý cách chúng tôi đề cập đến các đối số trong hàm là $ 1 và $ 2.
Tạo hàm add_em (int4, int4) trả về int4 Như 'Chọn $ 1 + $ 2;' Ngôn ngữ 'kèo bóng đá euro'; Chọn add_em (1, 2) làm câu trả lời; +-------+ | Trả lời | +-------+ | 3 | +-------+
Khi chỉ định các kèo bóng đá euro với các đối số của các loại tổng hợp (chẳng hạn như EMP), chúng ta không chỉ cần chỉ định đối số nào chúng ta muốn (như Chúng tôi đã làm ở trên với $ 1 và $ 2) nhưng cũng là các thuộc tính của điều đó lý lẽ. Ví dụ: lấy kèo bóng đá euro double_salary tính toán mức lương của bạn sẽ là gì nếu nó được nhân đôi.
Tạo kèo bóng đá euro double_salary (emp) trả về int4 Như 'Chọn $ 1.Salary * 2 làm tiền lương;' Ngôn ngữ 'SQL'; Chọn tên, double_salary (emp) làm giấc mơ Từ EMP Trong đó emp.cubicle ~ = '(2,1)' :: point; +-----+-------+ | Tên | Giấc mơ | +-----+-------+ | Sam | 2400 | +-----+-------+
Lưu ý việc sử dụng cú pháp $ 1.Salary. Trước khi phóng vào Chủ đề của các kèo bóng đá euro trả về các loại tổng hợp, trước tiên chúng ta phải Giới thiệu các ký hiệu kèo bóng đá euro cho các thuộc tính chiếu. Các Cách đơn giản để giải thích điều này là chúng ta thường có thể sử dụng ký hiệu thuộc tính (lớp) và class.Attribution có thể thay thế cho nhau.
- - Điều này giống như: - Chọn emp.Name với tư cách là thanh niên từ EMP WHERE EMP.AGE <30 - Chọn Tên (EMP) làm trẻ tuổi Từ EMP Nơi tuổi (emp) <30; +----------+ | trẻ | +----------+ | Sam | +----------+
Tuy nhiên, như chúng ta sẽ thấy, điều này không phải lúc nào cũng đúng. Cái này Ký hiệu kèo bóng đá euro rất quan trọng khi chúng ta muốn sử dụng một kèo bóng đá euro trả về một trường hợp duy nhất. Chúng tôi làm điều này bằng cách lắp ráp toàn bộ thể hiện trong hàm, thuộc tính theo thuộc tính. Đây là một Ví dụ về một hàm trả về một cá thể EMP duy nhất:
Tạo kèo bóng đá euro new_emp () trả về emp Như 'Chọn \' none \ ':: văn bản dưới dạng tên, 1000 là tiền lương, 25 như tuổi, \ '(2,2) \' :: Điểm là Cubicle ' Ngôn ngữ 'SQL';
Trong trường hợp này, chúng tôi đã chỉ định từng thuộc tính với một giá trị không đổi, nhưng bất kỳ tính toán hoặc biểu thức nào cũng có thể thay thế cho các hằng số này. Xác định một kèo bóng đá euro như thế này có thể là khó khăn. Một số cảnh báo quan trọng hơn như sau:
Thứ tự danh sách đích phải giống hệt như trong mà kèo bóng đá euro thuộc tính xuất hiện trong câu lệnh CREATE TABLE (hoặc Khi bạn thực hiện một.* Truy vấn).
Bạn phải đánh máy kèo bóng đá euro biểu thức (sử dụng: :) rất cẩn thận hoặc bạn sẽ thấy lỗi sau:
WARN :: Hàm được tuyên bố trả về loại EMP không truy xuất (emp.*)
Khi gọi một hàm trả về một thể hiện, chúng ta không thể Lấy toàn bộ trường hợp. Chúng ta phải dự kiến một thuộc tính ra khỏi trường hợp hoặc chuyển toàn bộ trường hợp vào kèo bóng đá euro khác.
chọn Tên (new_emp ()) là không ai; +-------+ | Không ai | +-------+ | Không | +-------+
Lý do tại sao, nói chung, chúng ta phải sử dụng cú pháp kèo bóng đá euro Đối với các thuộc tính chiếu của các giá trị trả về hàm là Trình phân tích cú pháp không hiểu cú pháp (dấu chấm) khác cho phép chiếu khi kết hợp với các cuộc gọi kèo bóng đá euro.
Chọn new_emp (). Tên là không ai; WARN: trình phân tích cú pháp: lỗi cú pháp tại hoặc gần "."
Bất kỳ bộ sưu tập lệnh nào trongkèo bóng đá euroNgôn ngữ truy vấn có thể được đóng gói cùng nhau và được định nghĩa là một hàm. kèo bóng đá euro lệnh có thể bao gồm kèo bóng đá euro bản cập nhật (tức là,Chèn, Cập nhậtvàXóa) như cũng nhưChọnTruy vấn. Tuy nhiên, Lệnh cuối cùng phải làChọnĐiều đó Trả về bất cứ thứ gì được chỉ định là trả lại của hàm.
Tạo kèo bóng đá euro Clean_emp () Trả về Int4 Như 'xóa khỏi emp trong đó emp.salary <= 0; Chọn 1 làm bỏ qua_this ' Ngôn ngữ 'SQL'; Chọn Clean_emp (); +-+ | x | +-+ | 1 | +-+