FUNCTION (Hàm) trong SQL Server

Function (Hàm) là một đối tượng trong cơ sở dữ liệu bao gồm một tập nhiều câu lệnh được nhóm lại với nhau và được tạo ra với mục đích sử dụng lại. Trong SQL Server, hàm được lưu trữ và bạn có thể truyền các tham số vào cũng như trả về các giá trị.

Bài viết sẽ cung cấp cho bạn cú pháp và những ví dụ về cách tạo và xóa bỏ function trong SQL Server.

CREATE FUNCTION (Tạo Function)

Cú pháp

Để tạo một function trong SQL Server, ta sử dụng cú pháp như dưới đây:

CREATE FUNCTION [schema_name.]function_name
 ( [ @parameter [ AS ] [type_schema_name.] datatype
 [ = default ] [ READONLY ]
 , @parameter [ AS ] [type_schema_name.] datatype
 [ = default ] [ READONLY ] ]
 )
 
 RETURNS return_datatype
 
 [ WITH { ENCRYPTION
 | SCHEMABINDING
 | RETURNS NULL ON NULL INPUT
 | CALLED ON NULL INPUT
 | EXECUTE AS Clause ]
 
 [ AS ]
 
 BEGIN
 
 [declaration_section]
 
 executable_section
 
 RETURN return_value
 
 END;

Tham số:

  • schema_name: Tên schema (lược đồ) sở hữu function.
  • function_name: Tên gán cho function.
  • @parameter: Một hay nhiều tham số được truyền vào hàm.
  • type_schema_name: Kiểu dữ liệu của schema (nếu có).
  • Datatype: Kiểu dữ liệu cho @parameter.
  • Default: Giá trị mặc định gán cho @parameter.
  • READONLY: @parameter không thể bị function ghi đè lên.
  • return_datatype: Kiểu dữ liệu của giá trị trả về.
  • ENCRYPTION: Mã nguồn (source) của function sẽ không được lưu trữ dưới dạng text trong hệ thống.
  • SCHEMABINDING: Đảm bảo các đối tượng không bị chỉnh sửa gây ảnh hưởng đến function.
  • RETURNS NULL ON NULL INPUT: Hàm sẽ trả về NULL nếu bất cứ parameter nào là NULL.
  • CALL ON NULL INPUT: Hàm sẽ thực thi cho dù bao gồm tham số là NULL.
  • EXECUTE AS clause: Xác định ngữ cảnh bảo mật để thực thi hàm.
  • return_value: Giá trị được trả về.

Ví dụ

CREATE FUNCTION fuNhanvien
 ( @nhanvien_id INT )
 
 RETURNS VARCHAR(50)
 
 AS
 
 BEGIN
 
 DECLARE @nhanvien_name VARCHAR(50);
 
 IF @nhanvien_id < 10
 SET @nhanvien_name = 'Smith';
 ELSE
 SET @nhanvien_name = 'Lawrence';
 
 RETURN @nhanvien_name;
 
 END;

Hàm trên được gán tên là fuNhanvien, có một tham số @nhanvien_id với kiểu dữ liệu INT. Hàm sẽ được trả về giá trị kiểu VARCHAR(50) khi thực hiện câu lệnh RETURNS.

Sau đó, bạn có thể thực hiện tham chiếu fuNhanvien như sau:

USE [test]
 GO
 
 SELECT dbo.fuNhanvien(8);
 
 GO

Drop Function (Xóa bỏ Function)

Một khi đã tạo thành công các function thì cũng sẽ có những trường hợp bạn muốn xóa bỏ function khỏi cơ sở dữ liệu vì một vài lý do.

Cú pháp

Để xóa bỏ một function, ta có cú pháp sau:

DROP FUNCTION function_name;

Tham số:

function_name: Tên function bạn muốn xóa bỏ..

Ví dụ

DROP FUNCTION fuNhanvien;

Thực hiện lệnh này là bạn đã vừa xóa bỏ hàm fuNhanvien khỏi database.