Function (hàm) trong sql server!
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ể |
Chủ đề Tương tự
- Tags:
Không có đánh giá nào.
Viết một đánh giá.
Để bình luận vui lòng Đăng nhập tài khoản ! hoặcĐăng ký mới!