Overblog
Edit post Follow this blog Administration + Create my blog
dionysus

Function trong SQL

December 7 2019 , Written by tokyo_ai Published on #SQL

Function trong SQL Server


     Function 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,
function được lưu trữ và có thể truyền các tham số vào cũng như trả về các giá trị.
Các hàm sẽ giúp đơn giản hóa chương trình và có thể tái sử dụng nhiều lần.

Có 2 kiểu Function:
 Hàm trả về giá trị kiểu giá trị cụ thể (SCALAR VALUED)
 Hàm trả về giá trị kiểu TABLE(TABLE VALUED)

1. Tạo mới Function (Create Function)
Để tạo một function trong SQL Server, ta sử dụng cú pháp:

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ề.
 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

1.1 .Hàm trả về giá trị kiểu giá trị cụ thể:

CREATE FUNCTION FN_TENHAM(@THAMBIEN1 KIEUDL(KT),,,,)
RETURNS KIEUDL TRA VE
AS
BEGIN
DECLARE @BIEN KIEUDL(KT)
--XU LY TREN HAM
RETURN @BIEN
END
Gọi hàm: SELECT DBO.TENHAM(DOISO1,DOISO2, , ,)

1.2.Hàm trả về kiểu bảng: thay thể cho view, view không truyền được tham
biến nên ta phải tạo Function trả về Table.

CREATE FUNCTION TENHAM(@THAMBIEN KIEUDL(KT).....)
RETURNS @TENBANG TABLE(
TRUONG1 KIEUDL1(KT),
TRUONG2 KIEUDL2(KT),
...
)

AS
BEGIN
INSERT INTO @TENBANG
SELECT TRUONG1,TRUONG2,...
RETURN
END
Gọi hàm: SELECT * FROM TENHAM(DOISO1,DOISO2, , ,)

1.3. Sửa Function trong SQL Server
Để sửa thay đổi nội dung của một Function ta thay CREATE bằng ALTER.

1.4. Xóa bỏ Function (Drop Function)

DROP FUNCTION FN_THONGKE

Lưu ýenlightened:
Mỗi function có thể sử dụng ở bất cứ đâu trong câu lệnh T-SQL và nằm trong
phạm vi database.
Có thể có nhiều tham số, tuy nhiên chỉ trả về được một giá trị duy nhất, bắt buộc
phải return.
Có thể sử dụng câu lệnh T-SQL bên trong function.
Function này có thể sử dụng function khác.

Share this post
To be informed of the latest articles, subscribe:
Comment on this post