Trong phần này chúng ta sẽ tìm hiểu đến function trong SQL Server, đây là chức năng giúp ta gom các câu lệnh SQL thành một nhóm và có thể sử dụng lại nhiều lần.
Lưu ý: function hai còn gọi là hàm.
Mục lục
- 1. Function trong SQL Server là gì?
- 2. Cách gọi function trong SQL Server
- 3. Sửa function trong SQL Server
- 4. Xóa function trong SQL Server
1. Function trong SQL Server là gì?
Nếu nói đến gom nhóm và sử dụng nhiều lần thì stored procedure cũng làm được, tuy nhiên procedure sẽ không có giá trị trả về, còn function thì sẽ có giá trị trả về. SQL Server cũng có rất nhiều hàm có sẵn như hàm nối chuỗi (concat), hàm tính giá trị căn bậc hai (sqrt).
Các hàm sẽ giúp đơn giản hóa chương trình và có thể sử dụng nhiều lần. Ví dụ bạn cần viết một loạt các câu lệnh SQL phức tạp lên đến hàng ngàn dòng thì có thể phân tích và chia nhỏ thành nhiều hàm
Cú pháp tạo hàm như sau:
1 2 3 4 5 6 | CREATE FUNCTION function_name (parameter_list) RETURN data_type AS BEGIN statements RETURN value END |
Trong đó:
function_name
là tên của functionparameter_list
là danh sách các tham số truyền vào functionRETURN data_type AS
là xác định kiểu dữ liệu mà function sẽ trả vềstatements
là danh sách các lệnh SQLRETURN
value là giá trị sẽ được trả về.
Trong ví dụ dưới đây là một function có chức năng tính tổng của hai số.
1 2 3 4 5 6 7 8 9 | CREATE FUNCTION tinh_tong( @a INT , @b INT ) RETURNS INT AS BEGIN RETURN @a * @b; END ; |
Hoặc dựa vào database mẫu mình viết một function như sau:
1 2 3 4 5 6 7 8 9 10 | CREATE FUNCTION sales.udfNetSale( @quantity INT , @list_price DEC (10,2), @discount DEC (4,2) ) RETURNS DEC (10,2) AS BEGIN RETURN @quantity * @list_price * (1 - @discount); END ; |
Hàm này sẽ tính giá của một sản phẩm sau khi được giảm.
Sau khi chạy khởi tạo hàm này thì bạn sẽ thấy nó trong SSMS bằng cách click vào Programmability > Functions > Scalar-valued Functions.
2. Cách gọi function trong SQL Server
Về cách dùng thì cũng như các hàm có sẵn của SQL Server, bạn chỉ cần gọi tên và truyền tham số vào (nếu có).
1 2 | SELECT tinh_tong(10, 20) tong |
Hoặc bạn thử chạy hàm thứ hai ở trên trong database mẫu;
1 2 | SELECT sales.udfNetSale(10,100,0.1) net_sale |
Thì kết quả sẽ như hình sau:
Bây giờ hãy áp dụng nó vào câu lệnh select để hiện thị giá cho mỗi sản phẩm nằm trong table order_items
.
1 2 3 4 5 6 7 8 9 | SELECT order_id, SUM (sales.udfNetSale(quantity, list_price, discount)) net_amount FROM sales.order_items GROUP BY order_id ORDER BY net_amount DESC ; |
Kết quả sẽ như hình sau:
3. Sửa function trong SQL Server
Tương tự như Stored Procedure, để chỉnh sửa function thì bạn sử dụng cú pháp sau:
1 2 3 4 5 6 | ALTER FUNCTION [schema_name.]function_name (parameter_list) RETURN data_type AS BEGIN statements RETURN value END |
Nội dung mới của function sẽ thay thế nội dung cũ. Lệnh nay chỉ sửa được với những function mà do chính bạn tạo ra thôi nhé, không thể sửa các function có sẵn như count, concat.
4. Xóa function trong SQL Server
Để xóa một function nào đó thì bạn sử dụng lệnh DROP FUNCTION với cấu trúc như sau:
1 | DROP FUNCTION [schema_name.]function_name; |
Ví dụ mình muốn xóa function đã tạo ở trên thì chạy lệnh sau:
1 | DROP FUNCTION sales.udfNetSale; |
Tương tự, bạn chỉ có thể xóa function do bạn tự tạo.
Một vài lưu ý khác
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 mọi câu lệnh T-SQL bên trong function.
Function này có thể sử dụng function khác
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty