HÀM (FUNCTION) TRONG MICROSOFT SQL SERVER


SQL Server hỗ trợ 3 loại hàm chính:

1. Scalar Function (Hàm vô hướng)

  • Trả về một giá trị duy nhất
  • Thường dùng trong SELECT, WHERE, HAVING,...

Ví dụ:


 

CREATE FUNCTION fn_TinhTuoi (@NamSinh INT)
RETURNS INT
AS
BEGIN
RETURN YEAR(GETDATE()) - @NamSinh
END

Sử dụng:


 

SELECT dbo.fn_TinhTuoi(2000) AS Tuoi


2. Inline Table-Valued Function (Hàm bảng dạng inline)

  • Trả về một bảng
  • Không có BEGIN...END
  • Hiệu năng tốt hơn multi-statement

Ví dụ:


 

CREATE FUNCTION fn_DanhSachSinhVien (@LopID INT)
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM SinhVien
WHERE LopID = @LopID
)

Sử dụng:


 

SELECT * FROM fn_DanhSachSinhVien(1)


3. Multi-statement Table-Valued Function

  • Trả về bảng nhưng dùng nhiều câu lệnh
  • Có thể xử lý logic phức tạp

Ví dụ:


 

CREATE FUNCTION fn_LocSinhVien (@Diem FLOAT)
RETURNS @KetQua TABLE (
MaSV INT,
TenSV NVARCHAR(100),
Diem FLOAT
)
AS
BEGIN
INSERT INTO @KetQua
SELECT MaSV, TenSV, Diem
FROM SinhVien
WHERE Diem >= @Diem

RETURN
END