Ở các phần chia sẻ trước đây, mình đã có đề cập đến FUNCTION, nhưng đó là các FUNCTION có sẵn trong thư viện của SQL (như các hàm CHAR_LENGTH(), CONCAT(), CURDATE()…), chúng ta có thể gọi ra và sử dụng luôn.
Nhưng với các vấn đề mà các FUNCTION không thể giải quyết được cho chúng ta. Thì chúng ta phải tự tạo ra một FUNCTION để sử dụng, hay còn gọi là USER FUNCTION.
Nội dung
1. USER FUNCTION là gì?
Cũng là một đoạn chương trình, bao gồm các câu lệnh SQL để thực hiện cho một nghiệp vụ cụ thể. Và thường được dùng chung với các câu lệnh truy vấn.
Create User function
2. Mục đích sử dụng FUNCTION
- Nó là tập hợp các khối lệnh, dùng để tái sử dụng:
- Trả về giá trị đơn.
- Có thể sử dụng chung với câu lệnh SQL hoặc các dạng khối lệnh khác.
- FUNCTION có thể truyền tham số và xử lý dữ liệu.
3. Hướng dẫn cách tạo FUNCTION
3.1. Tạo FUNCTION
Cú pháp
CREATE FUNCTION func_name ([parameter[,...]])
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
sql_statement
RETURN value;
END;
Ví dụ
Mình tạo ra FUNCTION để trả về đầy đủ họ tên của một người với 3 giá trị được truyền vào: tên (p_first_name), tên lót (p_middle_name), họ (p_last_name).
delimiter //
CREATE FUNCTION get_full_name (p_first_name VARCHAR(10)
, p_middle_name VARCHAR(10)
, p_last_name VARCHAR(10))
RETURNS VARCHAR(30)
DETERMINISTIC
BEGIN
DECLARE result VARCHAR(30);
SET result = (SELECT CONCAT(p_first_name, ' ', p_middle_name, ' ', p_last_name));
RETURN result;
END //
delimiter ;
Sau đó, mình sử dụng nó để lấy họ và tên của các bác sĩ, như thế này:
SELECT get_full_name(first_name, middle_name, last_name)
FROM doctor;
3.2. Xoá FUNCTION
Cú pháp
DROP FUNCTION func_name
Ví dụ
Thực hiện xoá function vừa tạo bên trên
DROP FUNCTION get_full_name
4. Tham số và biến ở FUNCTION
Ở FUNCTION sẽ chỉ có 1 dạng tham số là IN, tức là nó giúp truyền giá trị vào hàm (Xem thêm ví dụ ở video để nắm rõ hơn).
Còn muốn tạo ra biến lưu trữ giá trị khi thao tác với dữ liệu, thì giống hệt như SP:
DECLARE total INT DEFAULT 0;
SET total = 10;
Mình đang thực hiện tạo ra biến total có kiểu dữ liệu là số, với giá trị mặc định là 0. Sau đó tiếp tục thực hiện phép gán bởi từ khoá SET, giá trị của total cuối cùng là 10.
Kết luận
Qua 2 bài FUNCTION và STORED PROCEDURE, chúng ta có thể thấy 2 khái niệm này gần giống như nhau. Có một điểm khác biệt rõ nhất là ở FUNCTION, chúng ta có thể trả về giá trị, tức là dùng được từ khoá RETURN, còn ở SP thì không thể thực hiện được việc này.
0 Lời bình