FUNCTION (Hàm) trong SQL Server

Function trong SQL Server là gì? Cách dùng function SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

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.

SQL Server có sẵn nhiều hàm bao gồm chuỗi, số, ngày tháng, chuyển đổi và một số hàm nâng cao trong SQL Server. Một số hàm chuỗi nổi bật trong SQL Server:

Hàm

Công dụng

ASCII

Trả về giá trị ASCII cho ký tự cụ thể

CHAR

Trả về ký tự dựa trên code ASCII

CHARINDEX

Trả về vị trí của chuỗi phụ trong một chuỗi

CONCAT

Thêm hai hoặc nhiều chuỗi hơn cùng nhau

Concat with +

Thêm cùng lúc từ hai chuỗi trở lên

CONCAT_WS

Thêm từ hai chuỗi trở lên cùng nhau bằng một dấu phân tách

DATALENGTH

Trả về số byte được dùng để trình bày một biểu thức

DIFFERENCE

So sánh hai giá trị SOUNDEX, và trả về một giá trị số nguyên

FORMAT

Định dạng một giá trị với số cụ thể

LEFT

Trích xuất một số ký tự từ một chuỗi (bắt đầu từ bên trái)

LEN

Trả về độ dài của một chuỗi

LOWER

Chuyển đổi một chuỗi sang chữ viết thường

LTRIM

Xóa khoảng trắng ở đầu chuỗi

NCHAR

Trả về ký tự Unicode dựa trên mã số

PATINDEX

Trả về vị trí của một mẫu trong một chuỗi

QUOTENAME

Trả về chuỗi Unicode có dấu phân cách được thêm vào để biến chuỗi thành mã định danh được phân tách bằng SQL Server hợp lệ

REPLACE

Thay thế tất cả các lần xuất hiện của một chuỗi con trong một chuỗi bằng một chuỗi con mới

Bài trước: SEQUENCE trong SQL Server

Bài tiếp: PROCEDURE (Thủ tục) trong SQL Server

Thứ Tư, 08/03/2023 16:51
4,331 👨 123.052
0 Bình luận
Sắp xếp theo
    ❖ SQL Server