Trang chủ » Blog » Tạo và sử dụng USER FUNCTION

Tạo và sử dụng USER FUNCTION

Ở 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.

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.

[Database] User Function

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

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

2 + 1 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM