CREATE FUNCTION - Lệnh tạo hàm trong SQL Server


  • 2025-03-01 09:24:38

CREATE FUNCTION trong SQL Server là gì? Hãy cùng AntBook  tìm hiểu lệnh tạo và sử dụng hàm FUNCTION SQL tùy chỉnh để tối ưu hóa truy vấn, tăng khả năng tái sử dụng mã và cải thiện hiệu suất nhé!

1. Function là gì? CREATE FUNCTION SQL dùng để làm gì?

1.1 Function trong SQL Server là gì?

Trong lập trình nói chung và SQL nói riêng, Function (Hàm) là một khối mã được viết sẵn để thực hiện một công việc cụ thể và có thể được gọi đi gọi lại nhiều lần. Function giúp tái sử dụng mã, giảm thiểu sai sót và làm cho chương trình dễ bảo trì hơn.

Trong SQL, Function thường được sử dụng để thực hiện các thao tác trên dữ liệu, như tính toán, chuyển đổi kiểu dữ liệu, xử lý chuỗi hoặc ngày tháng. Function có thể nhận đầu vào (parameters) và luôn trả về một giá trị duy nhất.

Lệnh tạo hàm trong SQL Server

Function là một khối mã được viết sẵn để thực hiện một công việc cụ thể

Ví dụ, SQL có một số hàm có sẵn (Built-in Functions) như:

  • SUM(column_name): Tính tổng giá trị của một cột.
  • LEN(column_name): Tính độ dài chuỗi trong một cột.
  • GETDATE(): Trả về ngày và giờ hiện tại của hệ thống.

Ngoài các hàm có sẵn, SQL còn cho phép người dùng tự định nghĩa hàm theo nhu cầu của mình bằng lệnh CREATE FUNCTION.

1.2  Lệnh CREATE FUNCTION SQL dùng để làm gì?

Lệnh CREATE FUNCTION trong SQL được sử dụng để tạo User-Defined Function (UDF), tức là các hàm do người dùng tự định nghĩa để thực hiện một nhiệm vụ cụ thể mà các hàm có sẵn không đáp ứng được.

Các hàm do người dùng tạo có thể nhận tham số đầu vào, xử lý dữ liệu và trả về một giá trị duy nhất (hàm đơn trị) hoặc một bảng dữ liệu (hàm bảng).

Lệnh tạo hàm trong SQL Server

Bạn có thể dùng lại nhiều lần mà không cần viết lại đoạn mã xử lý

Khi đã tạo một hàm function trong SQL Server, bạn có thể dùng lại nhiều lần mà không cần viết lại đoạn mã xử lý. Các hàm có thể tối ưu hóa việc xử lý dữ liệu thay vì lặp lại nhiều truy vấn phức tạp.Ngoài ra, lệnh tạo hàm CREATE FUNCTION còn giúp SQL Query ngắn gọn, dễ đọc và dễ bảo trì hơn.

2. Cú pháp của CREATE FUNCTION trong SQL

2.1 Hàm CREATE FUNCTION SQL đơn trị

CREATE FUNCTION Tên_hàm(Khai_báo_tham_số)

RETURNS Kiểu_dữ_liệu_trả_về

AS

BEGIN

    Lệnh…

    RETURN Giá_trị_trả_về

END

GO

2.2 Lệnh CREATE FUNCTION: Hàm đọc bảng

CREATE FUNCTION Tên_hàm(Khai_báo_tham_số)

RETURNS TABLE

AS

RETURN

(

    Câu_truy_vấn

)

GO

2.3 Lệnh CREATE FUNCTION: Hàm tạo bảng

CREATE FUNCTION Tên_hàm(Khai_báo_tham_số)

RETURNS Tên_biến TABLE(Khai_báo_cấu_trúc_bảng)

AS

BEGIN

    INSERT | UPDATE | DELETE

    RETURN

END

GO

Ví dụ: Giả sử chúng ta muốn tạo một hàm để tính tuổi từ ngày sinh (BirthDate). Bạn sẽ dùng hàm đơn trị

CREATE FUNCTION dbo.CalculateAge (@BirthDate DATE)

RETURNS INT

AS

BEGIN

    RETURN DATEDIFF(YEAR, @BirthDate, GETDATE())

END;

Cách sử dụng hàm function trong SQL Server mới tạo như sau:

SELECT dbo.CalculateAge(‘1995-06-15’) AS Age;

Hàm này sẽ trả về tuổi của một người dựa trên ngày sinh nhập vào. Như vậy, CREATE FUNCTION giúp chúng ta định nghĩa các hàm tùy chỉnh để thực hiện các thao tác lặp lại, giúp SQL code rõ ràng và hiệu quả hơn.

3. Ví dụ thực tế về lệnh tạo hàm FUNCTION trong SQL Server

3.1 Ví dụ về hàm đơn trị trong SQL Server

–Hàm tính diện tích hình tròn khi biết bán kính

CREATE FUNCTION dbo.Dien_tich_hinh_tron (@Ban_kinh float = 1.0)

RETURNS float

WITH RETURNS NULL ON NULL INPUT

AS

BEGIN

    RETURN PI() * POWER(@Ban_kinh, 2)

END

GO

–Gọi thực hiện

–Cách 1

PRINT dbo.Dien_tich_hinh_tron(3.5)

GO

–Cách 2

DECLARE @r float =3.5

DECLARE @s float = dbo.Dien_tich_hinh_tron(@r)

PRINT @s

GO

Lệnh tạo hàm trong SQL Server

Ví dụ về tạo hàm đơn trong SQL Server

–Hàm tính giai thừa một số nguyên N (N >= 0)

CREATE FUNCTION dbo.Giai_thua (@n int = 1)

RETURNS decimal(38, 0) 

AS

BEGIN

    RETURN

    (

        CASE

        WHEN @n < 0 THEN NULL

        WHEN @n = 0 THEN 1

        WHEN @n > 1 THEN CAST(@n AS float) * dbo.Giai_thua(@n – 1)

        WHEN @n = 1 THEN 1 END

    )

END

–Gọi thực hiện

PRINT dbo.Giai_thua(3)

Lệnh tạo hàm trong SQL Server

Ví dụ về tạo hàm đơn trong SQL Server

3.2 Ví dụ tạo hàm đọc bảng SQL Server

–Tạo hàm đọc danh sách nhân viên theo mã phòng truyền vào

CREATE FUNCTION Danh_sach_nhan_vien(@depid numeric(3,0))

RETURNS TABLE

AS

RETURN

(

    SELECT *

    FROM EMPLOYEES

    WHERE Department_id = @depid OR @depid = 0

)

GO

–Gọi hàm

SELECT * FROM Danh_sach_nhan_vien(80)

Lệnh tạo hàm trong SQL Server

Ví dụ về tạo hàm đọc bảng trong SQL Server

3.3 Ví dụ CREATE FUNCTION tạo bảng SQL Server

–Tạo hàm

CREATE FUNCTION Thong_ke_nhan_vien()

RETURNS @bang TABLE

(

    Maphong numeric(3,0),

    Tenphong nvarchar(30),

    Sonv tinyint

)

AS

BEGIN

    INSERT INTO @bang

    SELECT e.Department_id, d.Department_name, COUNT(*) 

    FROM EMPLOYEES e JOIN DEPARTMENTS d ON e.Department_id = d.Department_id

    GROUP BY e.Department_id, d.Department_name

    RETURN

END

–Gọi hàm

SELECT * FROM Thong_ke_nhan_vien()

Lệnh tạo hàm trong SQL Server

Ví dụ về tạo hàm tạo bảng Table trong SQL Server

4. Quy tắc tạo hàm (CREATE FUNCTION) trong SQL Server

Khi tạo một hàm trong SQL Server, bạn cần tuân theo một số quy tắc quan trọng để đảm bảo hàm hoạt động đúng cách và không gây lỗi trong quá trình thực thi.

Mỗi hàm trong SQL Server cần có một tên duy nhất để có thể được gọi khi cần thiết. Tên hàm không được bắt đầu bằng các ký tự đặc biệt như @, $, # hoặc bất kỳ ký tự nào không hợp lệ khác. Điều này giúp tránh xung đột với các biến hệ thống hoặc các đối tượng khác trong SQL Server.

Lệnh tạo hàm trong SQL Server

Mỗi hàm trong SQL Server cần có một tên duy nhất

Trong SQL Server, các hàm không thể thực hiện các thao tác thay đổi dữ liệu như INSERT, UPDATE hoặc DELETE. Chúng chỉ có thể thực hiện truy vấn và trả về kết quả thông qua lệnh SELECT. Điều này có nghĩa là các hàm chủ yếu được sử dụng để xử lý và tính toán dữ liệu, chứ không phải để sửa đổi dữ liệu trong bảng.

Bạn có thể sử dụng một hàm tùy chỉnh giống như các hàm hệ thống có sẵn trong SQL Server, chẳng hạn như AVG(), COUNT(), SUM(), MIN(), DATE() và nhiều hàm khác. Các hàm này có thể được gọi trong các câu lệnh SELECT để tính toán và xử lý dữ liệu linh hoạt hơn.

Bất cứ khi nào bạn gọi một hàm trong SQL Server, hệ thống sẽ biên dịch hàm đó trước khi thực thi. Điều này đảm bảo rằng mọi thay đổi trong mã nguồn của hàm sẽ được cập nhật ngay lập tức khi có yêu cầu sử dụng.
Mỗi hàm trong SQL Server phải luôn trả về một kết quả duy nhất. Kết quả này có thể là một giá trị đơn lẻ (trong trường hợp hàm đơn trị) hoặc một tập dữ liệu (trong trường hợp hàm trả về bảng). Điều này giúp đảm bảo rằng mọi hàm đều có một đầu ra rõ ràng để sử dụng trong các truy vấn SQL.
Khi tạo một hàm trong SQL Server, bạn chỉ có thể khai báo tham số đầu vào (input parameters) để truyền giá trị vào hàm. SQL Server không hỗ trợ tham số đầu ra (output parameters) hoặc tham số có thể thay đổi giá trị trong quá trình thực thi. Điều này giúp duy trì tính bất biến của hàm và tránh ảnh hưởng đến dữ liệu bên ngoài.

Lệnh tạo hàm trong SQL Server

SQL Server không hỗ trợ tham số đầu ra hoặc tham số có thể thay đổi giá trị

SQL Server không cho phép sử dụng cấu trúc TRY…CATCH để xử lý lỗi bên trong một hàm. Nếu cần xử lý lỗi, bạn sẽ phải thực hiện kiểm tra lỗi bằng các phương pháp khác, chẳng hạn như kiểm tra giá trị đầu vào trước khi gọi hàm hoặc sử dụng các hàm hệ thống để xác định lỗi sau khi thực hiện truy vấn.
Việc tuân thủ các quy tắc trên giúp bạn viết các hàm SQL Server một cách chính xác và hiệu quả. Các hàm không chỉ giúp tái sử dụng mã mà còn giúp truy vấn dữ liệu nhanh chóng hơn, giảm thiểu sai sót trong quá trình xử lý dữ liệu. 

CREATE FUNCTION trong SQL Server là một công cụ mạnh mẽ giúp bạn xử lý dữ liệu linh hoạt và tối ưu hóa truy vấn hiệu quả. Việc sử dụng hàm tùy chỉnh không chỉ giúp giảm thiểu việc lặp lại mã mà còn cải thiện đáng kể hiệu suất hệ thống. Khi hiểu rõ cách hoạt động của các hàm trong SQL Server, bạn sẽ dễ dàng xây dựng các truy vấn phức tạp hơn, hỗ trợ tốt hơn cho việc phân tích và quản lý dữ liệu.

Nếu bạn muốn nâng cao kỹ năng phân tích dữ liệu và làm chủ SQL từ cơ bản đến nâng cao, bộ 2 cuốn sách Data Analyst Từ Cơ Bản Đến Nâng Cao sẽ là lựa chọn không thể bỏ qua. Sách tại AntBook được xuất bản chính hãng, in màu, trình bày khoa học với nhiều hình ảnh minh họa trực quan, giúp bạn dễ học, dễ ứng dụng ngay vào thực tế. Đặc biệt, bạn còn được tặng khóa học trực tuyến trọn đời miễn phí, học mọi lúc mọi nơi theo tiến độ của riêng bạn. Không những thế, bạn còn có cơ hội tham gia cộng đồng Photoshop, kết nối và hỏi đáp với chuyên gia 24/7. Nhanh tay sở hữu ngay bộ sách này để chinh phục Data Analyst chuyên nghiệp!