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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá mới ĐẾNPostgresTrước khi mô tả cách để thêm cách đọc kèo bóng đá loại mới.
Postgres cách đọc kèo bóng đáCung cấp ba loại cách đọc kèo bóng đá:
Các hàm ngôn ngữ truy vấn (cách đọc kèo bóng đá được viết bằngcách đọc kèo bóng đá)
Các hàm ngôn ngữ thủ tục (cách đọc kèo bóng đá được viết trong, cho Ví dụ, pltcl hoặc plsql)
Các hàm ngôn ngữ lập trình (các cách đọc kèo bóng đá được viết trong A đã biên dịch ngôn ngữ lập trình nhưC)
Các cách đọc kèo bóng đá SQL thực thi danh sách các truy vấn SQL tùy ý, Trả lại kết quả của truy vấn cuối cùng trong danh sách. cách đọc kèo bóng đá SQL Nói chung, bộ trả lại. Nếu returnType của họ không được chỉ định làsetof, sau đó là một yếu tố tùy ý của Kết quả cuối cùng của truy vấn sẽ được trả về.
phần thân của hàm SQL sau đây là danh sách cách đọc kèo bóng đá truy vấn được phân tách bởi cách đọc kèo bóng đá ký tự khoảng trắng và được đặt trong khung dấu ngoặc kép. Lưu ý rằng cách đọc kèo bóng đá dấu ngoặc kép được sử dụng trong cách đọc kèo bóng đá truy vấn phải được thoát ra, bằng cách trước chúng bằng hai dấu gạch chéo ngược.
Đối số cho hàm SQL có thể được tham chiếu trong cách đọc kèo bóng đá truy vấn Sử dụng cú pháp $ n: $ 1 đề cập đến đối số đầu tiên, $ 2 cho thứ hai, và như vậy. Nếu một đối số phức tạp, thìdotKý hiệu (ví dụ: "$ 1.emp") có thể được sử dụng để truy cập các thuộc tính của đối số hoặc để gọi các cách đọc kèo bóng đá.
Để minh họa cách đọc kèo bóng đá SQL đơn giản, hãy xem xét các điều sau đây, có thể được sử dụng để ghi nợ tài khoản ngân hàng:
Tạo cách đọc kèo bóng đá TP1 (int4, float8) Trả về Int4 As 'Cập nhật số dư của Ngân hàng = Bank.Balance - $ 2 WHERE Bank.acctountno = $ 1 Chọn (x = 1) ' Ngôn ngữ 'SQL';Người dùng có thể thực thi cách đọc kèo bóng đá này để ghi nợ tài khoản 17 $ 100,00 như sau:
Chọn (x = TP1 (17.100.0));
Ví dụ thú vị hơn sau đây lấy một đối số duy nhất của loại EMP và lấy nhiều kết quả:
Chọn cách đọc kèo bóng đá Sở thích (EMP) Trả về bộ sở thích Như 'Chọn (Sở thích. Tất cả) từ Sở thích Trong đó $ 1.name = Sở thích.Person ' Ngôn ngữ 'SQL';
đơn giản nhất có thểcách đọc kèo bóng đáHà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ữ 'cách đọc kèo bóng đá'; 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 cách đọc kèo bóng đá (với kết quả tên), nhưng danh sách mục tiêu của truy vấn đã gọi cách đọc kèo bóng đá vượt qua danh sách mục tiêu của cách đọc kèo bóng đá. Do đó, kết quả là Trả lời được dán nhãn thay vì một.
Nó gần như dễ xác địnhcách đọc kèo bóng đáCác cách đọc kèo bóng đá 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ữ 'cách đọc kèo bóng đá'; Chọn add_em (1, 2) làm câu trả lời; +-------+ | Trả lời | +-------+ | 3 | +-------+
Khi chỉ định các cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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ế:
- - Điều này giống như: - Chọn emp.Name với tư cách đọc kèo bóng đá 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 cách đọc kèo bóng đá rất quan trọng khi chúng ta muốn sử dụng một cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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à cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá 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 cách đọc kèo bóng đá Đố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 cách đọc kèo bóng đá.
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 trongcách đọc kèo bóng đáNgôn ngữ truy vấn có thể được đóng gói cùng nhau và được định nghĩa là một hàm. cách đọc kèo bóng đá lệnh có thể bao gồm cách đọc kèo bóng đá bản cập nhật (tức là,Chèn, Cập nhậtvàXóa) cũng nhưChọnTruy vấn. Tuy nhiên, lệnh cuối cùng phải làChọntrả về bất cứ điều gì được chỉ định là trở lại của cách đọc kèo bóng đá.
Tạo cách đọc kèo bóng đá 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 | +-+