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é!

SQL Server là một trong số kiến thức lập trình mà bạn nhất định phải biết nếu muốn quản trị cơ sở dữ liệu tốt khi phát triển sản phẩm hay dự án. Trong đó, function SQL Server rất quan trọng.

Function trong SQL Server là các đối tượng database chứa một nhóm lệnh SQL để triển khai một nhiệm vụ cụ thể. Một hàm chấp nhận các tham số đầu vào, thực thi hành động, sau đó trả về kết quả.

Bạn cần ghi nhớ rằng hàm đó luôn trả về một giá trị đơn lẻ hoặc một bảng. Mục đích chính của hàm này là tái tạo nhiệm vụ chung dễ dàng. Bạn có thể xây dựng các hàm một lần và dùng chúng ở nhiều vị trí dựa theo nhu cầu. SQL Server không cho phép sử dụng các hàm để chèn, xóa hoặc update bản ghi trong bảng cơ sở dữ liệu.

Sau đây là những quy tắc tạo các hàm trong SQL Server:

  • Một hàm phải có tên. Tên không thể bắt đầu bằng một ký tự đặc biệt như @, $, # hoặc ký tự tương tự khác.
  • Lệnh SELECT là lệnh duy nhất hoạt động với các hàm.
  • Bạn có thể dùng một hàm tại vị trí bất kỳ như AVG, COUNT, SUM, MIN, DATE và các hàm khác bằng truy vấn SELECT trong SQL.
  • Bất cứ khi nào gọi một hàm, nó sẽ được biên dịch.
  • Hàm phải trả về một giá trị hoặc kết quả.
  • Hàm chỉ sử dụng các tham số đầu vào.
  • Bạn không thể dùng lệnh TRY và CATCH trong hàm.

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

Hàm số trong SQL Server

Hàm

Mô tả

ABS

Trả về giá trị tuyệt đối của một số

ACOS

Trả về cung cosin của một số

ASIN

Trả về cung sin của một số

ATAN

Trả về tang arc của một số

ATN2

Trả về tang arc của hai số

AVG

Trả về giá trị trung bình của một biểu thức

CEILING

Trả về giá trị số nguyên nhỏ nhất >= một số cụ thể

COUNT

Trả về số bản ghi được trả về bởi truy vấn select

COS

Trả về cosin của một số

COT

Trả về cotang của một số

DEGREES

Chuyển đổi một giá trị tính bằng radian sang độ

EXP

Trả về e nâng lên lũy thừa của một số cụ thể

FLOOR

Trả về giá trị số nguyên lớn nhất <= một số cụ thể

LOG

Trả về logarit tự nhiên của một số hoặc logarit của một số cho một cơ số đã chỉ định

LOG10

Trả về logarit tự nhiên của một số cho cơ số 10

MAX

Trả về giá trị lớn nhất trong một tập hợp các giá trị

MIN

Trả về giá trị nhỏ nhất trong một tập hợp các giá trị

PI

Trả về giá trị PI

POWER

Trả về giá trị của một số được nâng lũy thừa của một số khác

RADIANS

Chuyển đổi một giá trị độ thành radian

RAND

Trả về một số ngẫu nhiên

ROUND

Làm tròn số tới vị trí dấu thập phân được chỉ định

SIGN

Trả về dấu của một số

SIN

Trả về sin của một số

SQRT

Trả về căn bậc hai của một số

SQUARE

Trả về bình phương của một số

SUM

Tính tổng của một tập hợp các giá trị

TAN

Trả về tang của một số

Hàm nâng cao trong SQL Server

Hàm

Chức năng

CAST

Chuyển đổi một giá trị (của kiểu bất kỳ) vào một datatype cụ thể

COALESCE

Trả về giá trị không phải null đầu tiên trong danh sách

CONVERT

Chuyển đổi giá trị (của kiểu bất kỳ) vào một datatype cụ thể

CURRENT_USER

Trả về tên của người dùng hiện tại trong database SQL Server

IIF

Trả về một giá trị nếu điều kiện là TRUE, hoặc giá trị khác nếu điều kiện là FALSE

ISNULL

Trả về một giá trị cụ thể nếu biểu thức là NULL, nếu không nó trả về biểu thức này

ISNUMERIC

Kiểm tra một biểu thức xem nó có phải dạng số hay không

NULLIF

Trả về NULL nếu hai biểu thức bằng nhau

SESSION_USER

Trả về tên của người dùng hiện tại trong database SQL Server

SESSIONPROPERTY

Trả về cài đặt phiên cho một lựa chọn cụ thể

SYSTEM_USER

Trả về tên đăng nhập cho người dùng hiện tại

USER_NAME

Trả về tên người dùng database dựa trên ID cụ thể

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

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

Thứ Sáu, 27/10/2023 17:00
4,332 👨 144.994
0 Bình luận
Sắp xếp theo
    ❖ SQL Server