Bạn có thể tạo một hàm bằng lệnh tạo hàm. Cú pháp như sau -
delimiter // DROP FUNCTION if exists yourFunctionName; CREATE FUNCTION yourFunctionName(Parameter1,...N) returns type BEGIN # declaring variables; # MySQL statementns END // delimiter ;
Đầu tiên, ở đây chúng ta sẽ tạo một bảng và thêm một số bản ghi trong bảng. Sau đó, một chức năng đơn giản sẽ được tạo. Sau đây là truy vấn để tạo bảng -
mysql> create table ViewDemo −> ( −> Id int, −> Name varchar(200), −> Age int −> ); Query OK, 0 rows affected (0.58 sec)
Chèn bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -
mysql> insert into ViewDemo values(1,'John',23); Query OK, 1 row affected (0.15 sec) mysql> insert into ViewDemo values(2,'Sam',24); Query OK, 1 row affected (0.15 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from ViewDemo;
Sau đây là kết quả -
+------+------+------+ | Id | Name | Age | +------+------+------+ | 1 | John | 23 | | 2 | Sam | 24 | +------+------+------+ 2 rows in set (0.00 sec)
Bây giờ chúng ta sẽ tạo một hàm nhận tham số nguyên và trả về chuỗi. Mục đích của chức năng này là tìm kiếm các bản ghi với id đã cho. Nếu id đã cho khớp với id bảng thì nó sẽ trả về tên, nếu không nó sẽ đưa ra thông báo lỗi như không tìm thấy.
Chức năng như sau -
mysql> SET GLOBAL log_bin_trust_function_creators = 1; Query OK, 0 rows affected (0.00 sec) mysql> drop function if exists searchRecord; -> -> create function searchRecord(yourId int) returns char(100) -> begin -> declare Name1 char(100) default "No Name Found For This Id"; -> select Name into Name1 from ViewDemo where Id =yourId; -> return Name1; -> end // Query OK, 0 rows affected (0.21 sec) Query OK, 0 rows affected (0.33 sec) mysql> delimiter ;
Bây giờ để kiểm tra chức năng đang hoạt động với id đã cho.
Trường hợp 1 - Khi có id đã cho.
Truy vấn như sau -
mysql> select searchRecord(2) as Found;
Sau đây là kết quả -
+-------+ | Found | +-------+ | Sam | +-------+ 1 row in set (0.00 sec)
Trường hợp 2 - Khi id đã cho không xuất hiện.
Truy vấn như sau -
mysql> select searchRecord(100) as Found;
Sau đây là đầu ra bác bỏ bản ghi không có ở đó -
+---------------------------+ | Found | +---------------------------+ | No Name Found For This Id | +---------------------------+ 1 row in set (0.00 sec)