Câu lệnh CREATE FUNCTION được sử dụng để tạo một hàm được lưu trữ và các hàm do người dùng định nghĩa. Hàm được lưu trữ là một tập hợp các câu lệnh SQL thực hiện một số thao tác và trả về một giá trị
Một hàm được lưu trữ trong MySQL là một tập hợp các câu lệnh SQL thực hiện một số tác vụ/thao tác và trả về một giá trị duy nhất. Nó là một trong những loại chương trình được lưu trữ trong MySQL. Khi bạn tạo một hàm được lưu trữ, hãy đảm bảo rằng bạn có đặc quyền cơ sở dữ liệu CREATE ROUTINE. Nói chung, chúng tôi đã sử dụng chức năng này để đóng gói các quy tắc hoặc công thức kinh doanh phổ biến có thể tái sử dụng trong các chương trình hoặc câu lệnh SQL được lưu trữ
Hàm được lưu trữ gần giống với thủ tục trong MySQL, nhưng nó có một số điểm khác biệt như sau
- Tham số hàm có thể chỉ chứa tham số IN nhưng không được phép chỉ định tham số này, trong khi thủ tục có thể cho phép tham số IN, OUT, INOUT
- Hàm được lưu trữ chỉ có thể trả về một giá trị duy nhất được xác định trong tiêu đề hàm
- Hàm được lưu trữ cũng có thể được gọi trong các câu lệnh SQL
- Nó có thể không tạo ra một tập kết quả
Vì vậy, chúng ta sẽ xem xét hàm được lưu trữ khi mục đích của chương trình là tính toán và chỉ trả về một giá trị duy nhất hoặc tạo một hàm do người dùng định nghĩa
Cú pháp tạo hàm lưu trữ trong MySQL như sau
Tham số được sử dụng
Cú pháp hàm được lưu trữ sử dụng các tham số sau được thảo luận bên dưới
Tham số NameDescriptionsfun_nameĐó là tên của chức năng được lưu trữ mà chúng tôi muốn tạo trong cơ sở dữ liệu. Không được trùng với tên hàm có sẵn của MySQL. fun_parameterNó chứa danh sách các tham số được sử dụng bởi thân hàm. Nó không cho phép chỉ định các thông số IN, OUT, INOUT. datatypeLà kiểu dữ liệu giá trị trả về của hàm. Nó nên bất kỳ loại dữ liệu MySQL hợp lệ. đặc điểmCâu lệnh CREATE FUNCTION chỉ được chấp nhận khi các đặc điểm [XÁC ĐỊNH, KHÔNG CÓ SQL hoặc ĐỌC DỮ LIỆU SQL] được xác định trong khai báo. fun_body Tham số này có một tập hợp các câu lệnh SQL để thực hiện các thao tác. Nó yêu cầu ít nhất một câu lệnh RETURN. Khi câu lệnh return được thực thi, chức năng sẽ tự động kết thúc. Thân hàm được đưa ra dưới đây. BEGIN -- Các câu lệnh SQL END $$ DELIMITERVí dụ hàm lưu trữ MySQL
Hãy cho chúng tôi hiểu cách chức năng lưu trữ hoạt động trong MySQL thông qua ví dụ. Giả sử cơ sở dữ liệu của chúng tôi có một bảng tên là "khách hàng" chứa dữ liệu sau
Bây giờ, chúng ta sẽ tạo một hàm trả về nghề nghiệp của khách hàng dựa trên độ tuổi bằng cách sử dụng câu lệnh bên dưới
Thực hiện câu lệnh trên trên công cụ dòng lệnh, như hình bên dưới
Khi việc tạo chức năng thành công, chúng ta có thể thấy nó trong bàn làm việc của MySQL trong phần Chức năng như hình ảnh bên dưới
Chúng ta cũng có thể thấy tất cả các chức năng được lưu trữ có sẵn trong cơ sở dữ liệu hiện tại bằng cách sử dụng câu lệnh sau
Sau khi thực hiện lệnh trên, chúng ta sẽ nhận được đầu ra như dưới đây
Cuộc gọi chức năng được lưu trữ
Bây giờ, chúng ta sẽ xem cách hàm lưu trữ được gọi với câu lệnh SQL. Câu lệnh sau sử dụng hàm lưu trữ customer_occupation để nhận kết quả
Nó sẽ cho đầu ra như dưới đây
Chúng ta cũng có thể gọi hàm trên trong một chương trình được lưu trữ khác, chẳng hạn như thủ tục, hàm hoặc trình kích hoạt hoặc bất kỳ hàm tích hợp sẵn nào khác của MySQL
Gọi hàm lưu trữ trong thủ tục
Ở đây, chúng ta sẽ xem làm thế nào chức năng này có thể được gọi trong một thủ tục được lưu trữ. Câu lệnh này tạo một thủ tục trong cơ sở dữ liệu sử dụng hàm được lưu trữ Customer_Occupation[]
Giống như bạn có thể tạo các hàm bằng các ngôn ngữ khác, bạn có thể tạo các hàm của riêng mình trong MySQL. Hãy xem xét kỹ hơn
cú pháp
Cú pháp để tạo một hàm trong MySQL là
CREATE FUNCTION function_name [ [parameter datatype [, parameter datatype]] ] RETURNS return_datatype BEGIN declaration_section executable_section END;function_nameTên để gán cho chức năng này trong MySQL. tham sốMột hoặc nhiều tham số được truyền vào hàm. Khi tạo một hàm, tất cả các tham số được coi là tham số IN [không phải tham số OUT hoặc INOUT] trong đó các tham số có thể được tham chiếu bởi hàm nhưng không thể bị hàm ghi đè. return_datatypeKiểu dữ liệu của giá trị trả về của hàm. khai báo_phầnVị trí trong hàm mà bạn khai báo các biến cục bộ. executable_sectionVị trí trong hàm mà bạn nhập mã cho hàm
Thí dụ
Hãy xem một ví dụ cho thấy cách tạo một hàm trong MySQL
DELIMITER // CREATE FUNCTION CalcIncome [ starting_value INT ] RETURNS INT BEGIN DECLARE income INT; SET income = 0; label1: WHILE income