Trong bài này chúng tôi sẽ hướng dẫn cách tạo hàm Function và cách sử dụng hàm Function trong cơ sở dữ liệu SQL Server.
Hàm (Function) trong SQL Server là một khối lệnh hay một chương trình con, bao gồm các lệnh nhằm thực hiện một chức năng nào đó để trả về một giá trị.Hàm chỉ được thực thi khi nó được gọi.
Hàm được tạo ra với mục đích để tái sử dụng mã code nhiều lần nhằm tiết kiệm thời gian cho người lập trình.Bạn có thể định nghĩa Hàm 1 lần và gọi nó ở nhiều nơi và nhiều lần.
Trong SQL Server có các hàm của hệ thống (System Functions) và các hàm Functions do người dùng định nghĩa như: Table-valued Functions, Scalar-valued Functions, Aggregate Functions.
2.1 Tạo hàm Scalar-valued Functions trong SQL Server.
- Scalar-valued Functions là Hàm trả về giá trị vô hướng như INT, VARCHAR, NVARCHAR…
Cú pháp để tạo hàm Scalar-valued Function trong SQL Server như sau:
CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName>
(
-- Add the parameters for the function here
<@Param1, sysname, @p1> <Data_Type_For_Param1, , int>
)
RETURNS <Function_Data_Type, ,int>
AS
BEGIN
-- Declare the return variable here
DECLARE <@ResultVar, sysname, @Result> <Function_Data_Type, ,int>
-- Add the T-SQL statements to compute the return value here
SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1>
-- Return the result of the function
RETURN <@ResultVar, sysname, @Result>
END
Ví dụ tạo hàm Scalar-valued Fucntion trong SQL Server.
Ví dụ chúng ta cần tạo một hàm lấy tên nhân viên theo mã nhân viên.Nghĩa là khi chúng ta nhập mã nhân viên vào thì sẽ hiển thị tên nhân viên.
Để tạo hàm F_GetNameEMP vào Functions sau đó chọn Scalar-vaulued Fucntions và click chuột phải chọn New Scalar-vaulued Fucntions...
CREATE FUNCTION F_GetNameEMP
(
--Tham số truyền vào
@pv_EMP_ID varchar(50)
)
RETURNS NVARCHAR(255)
AS
BEGIN
-- Khai báo biến giá trị trả về
DECLARE @pv_Name nvarchar(255);
-- Lệnh SQL trả về giá trị là tên của nhân viên.
SELECT @pv_Name=EmployeeName FROM Employee_t WHERE EmployeeID=@pv_EMP_ID;
-- Trả về kết quả của hàm Return the result of the function
RETURN @pv_Name;
END
2.2 Tạo hàm Table-valued Functions.
-Table-valued Functions là hàm trả về giá trị là 1 bảng Table.
Cú pháp để tạo hàm Table-valued Function trong SQL Server như sau:
CREATE FUNCTION <Inline_Function_Name, sysname, FunctionName>
(
-- Add the parameters for the function here
<@param1, sysname, @p1> <Data_Type_For_Param1, , int>,
<@param2, sysname, @p2> <Data_Type_For_Param2, , char>
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT 0
)
Ví dụ tạo hàm F_Table_NhanVienAge23 lấy danh nhân viên theo tuổi.
Để tạo hàm F_Table_NhanVienAge23 vào Functions sau đó chọn Table-vaulued Fucntions và click chuột phải chọn New Inline Table-vaulued Fucntions...
CREATE FUNCTION [dbo].[F_Table_NhanVienAge23]
(
--Tham số truyền vào
@pv_Age int
)
RETURNS TABLE
AS
RETURN
(
-- Lệnh Select trả về giá trị là 1 bảng.
SELECT * FROM Employee_t WHERE EmployeeAge = @pv_Age
)
-Gọi hàm và sử dụng hàm Scaler-valued Functions trong SQL Server
SELECT dbo.F_GetNameEMP('NV_001') ;
-Gọi hàm và sử dụng hàm Table-valued Functions trong SQL Server
SELECT * FROM dbo.F_Table_NhanvienAge23(23);
Để chỉnh sửa và thay đổi một hàm Function trong SQL Server, bạn làm theo các bước sau:
-Nhấp vào tên hàm F_GetNameEMP mà bạn muốn chỉnh sửa sau đó chọn Modify để chỉnh sửa hàm, sau khi sửa xong Nhấn biểu tượng Execute hoặc F5 để biên dịch và lưu lại hàm.
Sử dụng lệnh DROP FUNCTION để xóa hàm Function trong SQL Server.
DROP FUNCTION function_name ;
Ví dụ để xóa hàm F_GetNameEMP như sau:
DROP FUNCTION F_GetNameEMP;
Ngoài ra bạn cũng có thể xóa một hàm Function bằng chức năng Delete trong SQL Server như sau: