Scalar-valued function là một loại hàm do người dùng định nghĩa (User-defined Function - UDF) trong SQL Server, dùng để trả về một giá trị đơn lẻ (scalar) như int, float, nvarchar, datetime, v.v..
Cách viết hàm
CREATE FUNCTION TenHam (@ThamSo KieuDuLieu, ...)
RETURNS KieuTraVe
AS
BEGIN
-- Khai báo biến (nếu cần)
-- Viết logic xử lý
RETURN GiaTri
END
Cách sử dụng hàm
SELECT dbo.TenHam(@ThamSo1, @ThamSo2, ...) AS TenCot
🔸 dbo là schema mặc định. Nếu bạn tạo hàm trong schema khác thì thay bằng tên schema đó.
🧪 Hàm kiểm tra chẵn lẻ
CREATE FUNCTION fn_KiemTraChanLe (@n INT)
RETURNS NVARCHAR(10)
AS
BEGIN
IF @n % 2 = 0
RETURN N'Chẵn'
ELSE
RETURN N'Lẻ'
END
SELECT dbo.fn_KiemTraChanLe(7) AS KetQua;
🧪 Hàm tính tuổi từ ngày sinh
CREATE FUNCTION fn_TinhTuoi (@NgaySinh DATE)
RETURNS INT
AS
BEGIN
RETURN DATEDIFF(YEAR, @NgaySinh, GETDATE())
- CASE WHEN MONTH(@NgaySinh) > MONTH(GETDATE())
OR (MONTH(@NgaySinh) = MONTH(GETDATE()) AND DAY(@NgaySinh) > DAY(GETDATE()))
THEN 1 ELSE 0 END
END
Cách dùng:
SELECT dbo.fn_TinhTuoi('2000-06-30') AS Tuoi;
Hàm Scalar valued function SQL Server là hàm trả về một giá trị duy nhất được xử lý từ các câu lệnh sql server
Ví dụ:
GO
/****** Object: UserDefinedFunction [dbo].[getTenLop] Script Date: 24/03/2023 20:11:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Create date: 2023-3-24
-- Description: <Description, ,>
-- =============================================
-- TEST: Select [dbo].[getTenLop]('1')
ALTER FUNCTION [dbo].[getTenLop]
(
-- Add the parameters for the function here
@Lop nvarchar(50)
)
RETURNS nvarchar(100)
AS
BEGIN
-- Declare the return variable here
DECLARE @ResultVar nvarchar(100)
-- Add the T-SQL statements to compute the return value here
SELECT @ResultVar = (Select TenLop From tbLop Where Lop=@Lop)
-- Return the result of the function
RETURN @ResultVar
END
Đặc điểm | Mô tả |
---|---|
Trả về | Một giá trị duy nhất (không phải bảng) |
Tham số đầu vào | Có thể có hoặc không |
Dùng được trong | SELECT , WHERE , ORDER BY , JOIN , v.v. |
Không được phép | INSERT , UPDATE , DELETE , MERGE trong thân hàm |
Định nghĩa một lần, dùng nhiều lần | Giúp tái sử dụng logic xử lý |
Tìm kiếm:
Viết hàm Scalar valued function SQL Server