MỤC LỤCNHẬN XÉT CỦA GIẢNG VIÊN2DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮC4DANH MỤC CÁC BẢNG4DANH MỤC CÁC HÌNH ẢNH4MỞ ĐẦU1CHƯƠNG I: THỦ TỤC LƯU TRỮ (STORED PROCEDURE)21. Tổng quan về thủ tục22. Phân loại thủ tục23. Thủ tục lưu trữ hệ thống24. Thủ tục do người dùng định nghĩa54.1. Đặc điểm54.2. Tạo thủ tục64.3. Sửa và xóa thủ tục11CHƯƠNG II: HÀM (FUNCTION)131. Tổng quan về hàm132. Phân loại hàm133. Hàm hệ thống144. Hàm do người dùng định nghĩa154.1. Đặc điểm154.2. Tạo hàm164.3. Ví dụ tạo hàm174.4. Sửa và xóa hàm20KẾT LUẬN22TÀI LIỆU THAM KHẢO23 DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮCKý hiệuTên tiếng anhTên tiếng ViệtDBADatabase AdministratorQuản trị viên cơ sở dữ liệuCSDLDatabaseCơ sở dữ liệuSQLStructured Query LanguageNgôn ngữ truy vấn có cấu trúcDANH MỤC CÁC BẢNGBảng 1. Các nhóm thủ tục lưu trữ hệ thống5Bảng 2. Các loại hàm hệ thống15DANH MỤC CÁC HÌNH ẢNHHình 1. Bảng thông tin sinh viên7Hình 2. Bảng thông tin lớp8Hình 3. Kết quả lời gọi thủ tục GT_Nam8Hình 4. Kết quả lời gọi thủ tục sp_sample9Hình 5. Kết quả lời gọi thủ tục sp_sample210Hình 6. Kết quả lời gọi thủ tục sp_sample310Hình 7. Kết quả lời gọi thủ tục sp_sample212Hình 8. Kết quả lời gọi hàm ChuviHT18Hình 9. Kết quả lời gọi hàm DDSV19Hình 10. Kết quả lời gọi hàm “Thong_ke”20Hình 11. Kết quả lời gọi hàm ChuviHT21 MỞ ĐẦUTrong quá trình vận hành cơ sở dữ liệu, đôi khi chúng ta cần thực hiện liên tục một câu hoặc khối lệnh dài, phức tạp để đáp ứng các nhu cầu quản trị dữ liệu. Tuy nhiên, việc một câu lệnh hoặc cấu trúc lệnh được sử dụng liên tục có thể sẽ khiến người dùng gặp phải nhiều vấn đề khó khăn, rắc rối trong quá trình thực hiện. Điều này cũng sẽ làm cho hiệu suất của việc thao tác cũng như hiệu suất của cơ sở dữ liệu giảm đáng kể. Vì thế một giải pháp hữu ích hơn đã được ra đời, đó chính là việc thực hiện các hàm (function) hoặc các thủ tục lưu trữ (stored procedure). Microsoft – một trong những nhà tiên phong trong hệ thống quản trị cơ sở dữ liệu với hệ quản trị cơ sở dữ liệu SQL Server cũng có những chức năng tuyệt vời trong việc sử dụng các đối tượng như là hàm hay thủ tục. Và để có thể hiểu rõ hơn cách sử dụng hai đối tượng này thì bài tiểu luận “Tìm hiểu về Stored Procedure và Function trong Microsoft SQL Server” sẽ giúp giải đáp được phần nào về vấn đề này. CHƯƠNG I: THỦ TỤC LƯU TRỮ (STORED PROCEDURE)1. Tổng quan về thủ tụcThủ tục là một nhóm các lệnh thực hiện chức năng nào đó, có thể được gom lại nhằm làm tăng khả năng xử lý, khả năng sử dụng chung, tăng tính bảo mật và an toàn dữ liệu, tiện ích trong quá trình sử dụng. Thủ tục có thể được lưu giữ ngay trong cơ sở dữ liệu như một đối tượng của cơ sở dữ liệu, sẵn sàng cho việc tái sử dụng. Thủ tục lúc này được gọi là thủ tục lưu trữ (stored procedure). Với các stored procedure, chúng đã được biên dịch thành dạng pcode vì thế có thể nâng cao khả năng thực hiện các thao tác ví dụ như thêm hoặc cập nhật các bản ghi.2. Phân loại thủ tụcCó thể phân loại cho thủ tục thành:Thủ tục do người dùng định nghĩa (Userdefined Stored Procedure): Là thủ tục do người dùng tạo ra để thực hiện các thao tác nhằm đáp ứng các nhu cầu hoặc công việc nào đó. Thủ tục lưu trữ tạm thời (Temporary Stored Procedure): Là một dạng thủ tục do người dùng xác định được lưu trữ trong CSDL tempdb. Có hai loại thủ tục tạm thời bao gồm: cục bộ và toàn cục. Các thủ tục lưu trữ tạm thời cục bộ có tiền tố là (); chúng chỉ hiển thị với kết nối người dùng hiện tại và sẽ bị xóa khi kết nối bị đóng. Các thủ tục tạm thời toàn cục có hai dấu số () là hai ký tự đầu tiên của tên chúng; chúng được hiển thị cho bất kỳ người dùng nào sau khi chúng được tạo và chúng sẽ bị xóa vào cuối phiên cuối cùng bằng cách sử dụng quy trình.Thủ tục lưu trữ hệ thống (System Stored Procedure): Đây là thủ tục được tích hợp sẵn trong SQL Server dưới dạng lưu trữ vật lý trong CSDL master và msdb. Trong hệ thống, các thủ tục này mang tiền tố là sp_, thường đóng vai trò hỗ trợ cho các DBA các vấn đề liên quan đến quản trị và an ninh dữ liệu.Thủ tục lưu trữ mở rộng (Extended UserDefined Stored Procedure): Các thủ tục mở rộng cho phép tạo các quy trình bên ngoài bằng ngôn ngữ lập trình chẳng hạn như C. Các thủ tục này là các thư viện liên kết động (DLL Dynamic Link Library) mà một phiên bản của SQL Server có thể tự động tải và khởi động. 13. Thủ tục lưu trữ hệ thốngTrong SQL Server, nhiều hoạt động quản trị và thông tin có thể được thực hiện bằng cách sử dụng các thủ tục được lưu trữ hệ thống. Các thủ tục được lưu trữ hệ thống được nhóm thành các loại như sau:LoạiMô tảActive GeoReplication Stored ProceduresĐược sử dụng để quản lý các cấu hình Active GeoReplication trong Cơ sở dữ liệu Azure SQLCatalog Stored ProceduresĐược sử dụng để triển khai các chức năng từ điển dữ liệu ODBC và tách các ứng dụng ODBC khỏi các thay đổi đối với các bảng hệ thống cơ bản.Change Data Capture Stored ProceduresĐược sử dụng để bật, tắt hoặc báo cáo về các đối tượng chứa dữ liệu thay đổi.Cursor Stored ProceduresĐược sử dụng để thực hiện chức năng biến con trỏ.Data Collector Stored ProceduresĐược sử dụng để làm việc với bộ thu thập dữ liệu và các thành phần sau: bộ thu thập, mục thu thập và loại bộ sưu tập.Database Engine Stored ProceduresĐược sử dụng để bảo trì chung của SQL Server Database Engine.Database Mail Stored Procedures (TransactSQL)Được sử dụng để thực hiện các hoạt động email từ bên trong một phiên bản của SQL Server.Database Maintenance Plan Stored ProceduresĐược sử dụng để thiết lập các nhiệm vụ bảo trì cốt lõi được yêu cầu để quản lý hiệu suất cơ sở dữ liệu.Distributed Queries Stored ProceduresĐược sử dụng để thực hiện và quản lý các truy vấn phân tán.Filestream and FileTable Stored Procedures Được sử dụng để cấu hình và quản lý các tính năng FILESTREAM và FileTable.Firewall Rules Stored Procedures Được sử dụng để cấu hình firewall của Cơ sở dữ liệu Azure SQL.FullText Search Stored ProceduresĐược sử dụng để triển khai và truy vấn các chỉ mục toàn văn.General Extended Stored ProceduresĐược sử dụng để cung cấp một giao diện từ một phiên bản của SQL Server đến các chương trình bên ngoài cho các hoạt động bảo trì khác nhau.Log Shipping Stored ProceduresĐược sử dụng để định cấu hình, sửa đổi và giám sát các nhật ký cấu hình vận chuyển.Management Data Warehouse Stored ProceduresDùng để cấu hình kho dữ liệu quản lý.OLE Automation Stored ProceduresĐược sử dụng để kích hoạt các đối tượng tự động hóa tiêu chuẩn để sử dụng trong một lô TransactSQL tiêu chuẩn.PolicyBased Management Stored ProceduresĐược sử dụng để quản lý dựa trên chính sách.PolyBase stored proceduresThêm hoặc xóa một máy tính khỏi nhóm PolyBase scaleout.Query Store Stored Procedures (TransactSQL)Được sử dụng để điều chỉnh hiệu suất.Replication Stored ProceduresĐược sử dụng để quản lý sao chép.Security Stored ProceduresDùng để quản lý bảo mật.Snapshot Backup Stored ProceduresĐược sử dụng để xóa bản sao lưu FILE_SNAPSHOT cùng với tất cả ảnh chụp nhanh của nó hoặc để xóa ảnh chụp nhanh tệp sao lưu riêng lẻ.Spatial Index Stored ProceduresĐược sử dụng để phân tích và cải thiện hiệu suất lập chỉ mục của các chỉ mục không gian.SQL Server Agent Stored ProceduresĐược sử dụng bởi SQL Server Profiler để theo dõi hiệu suất và hoạt động.SQL Server Profiler Stored ProceduresĐược sử dụng bởi SQL Server Agent để quản lý các hoạt động theo lịch trình và theo hướng sự kiện.Stretch Database Stored ProceduresĐược sử dụng để quản lý cơ sở dữ mở rộng.Temporal Tables Stored ProceduresSử dụng cho bảng thời gianXML Stored ProceduresĐược sử dụng để quản lý văn bản XML. 2Bảng 1. Các nhóm thủ tục lưu trữ hệ thống4. Thủ tục do người dùng định nghĩa4.1. Đặc điểm Bảo mật cao: Nhiều người dùng và chương trình khách có thể thực hiện các hoạt động trên các đối tượng cơ sở dữ liệu cơ bản thông qua một thủ tục đóng gói sẵn, ngay cả khi người dùng và chương trình không có quyền trực tiếp trên các đối tượng cơ bản đó. Thủ tục kiểm soát những quá trình và hoạt động được thực hiện và bảo vệ các đối tượng cơ sở dữ liệu bên dưới. Điều này loại bỏ yêu cầu cấp quyền ở cấp đối tượng riêng lẻ và đơn giản hóa các lớp bảo mật. Tái sử dụng: Sau khi một thủ tục được hình thành, chúng có thể được gọi ở nhiều nơi để sử dụng lại. Thực thi nhanh chóng: Máy chủ SQL Server tận dụng lợi thế của việc các đoạn mã trong thủ tục đã được biên dịch và lưu trữ sẵn trong cơ sở dữ liệu. Điều đó đồng nghĩa với việc thủ tục sẽ được thực thi nhanh hơn so do đã được biên dịch từ trước, thay vì phải mất nhiều thời gian để biên dịch các đoạn lệnh được gửi đến SQL Server mà chưa được lưu trữ.Tính nhất quán: Thủ tục lưu trữ thiết lập các ràng buộc dữ liệu để đảm bảo tính nhất quán. Người dùng không thể tùy tiện thao tác với dữ liệu để làm mất tính nhất quán của dữ liệu. Đồng thời người dùng cũng không biết được cấu trúc bên dưới của thủ tục làm cho việc sử dụng thủ tục đúng với mục đích nguyên bản.Giảm tải trên đường truyền: Các lệnh trong một thủ tục được thực hiện dưới dạng một loạt mã duy nhất. Điều này có thể làm giảm đáng kể lưu lượng mạng giữa máy chủ và máy khách vì chỉ có lệnh gọi thực thi thủ tục được gửi qua mạng.
Trang 1NGÂN HÀNG NHÀ NƯỚC VIỆT NAM BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP.HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ
Thành phố Hồ Chí Minh, tháng 07 năm 2021
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN
Trang 3
MỤC LỤC
1 Tổng quan về thủ tục 2
2 Phân loại thủ tục 2
3 Thủ tục lưu trữ hệ thống 2
4 Thủ tục do người dùng định nghĩa 5
4.1 Đặc điểm 5
4.2 Tạo thủ tục 6
4.3 Sửa và xóa thủ tục 11
1 Tổng quan về hàm 13
2 Phân loại hàm 13
3 Hàm hệ thống 14
4 Hàm do người dùng định nghĩa 15
4.1 Đặc điểm 15
4.2 Tạo hàm 16
4.3 Ví dụ tạo hàm 17
4.4 Sửa và xóa hàm 20
Trang 4DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮC
DBA Database Administrator Quản trị viên cơ sở dữ liệu
SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc
DANH MỤC CÁC BẢNG
Bảng 1 Các nhóm thủ tục lưu trữ hệ thống 5
Bảng 2 Các loại hàm hệ thống 15
DANH MỤC CÁC HÌNH ẢNH Hình 1 Bảng thông tin sinh viên 7
Hình 2 Bảng thông tin lớp 8
Hình 3 Kết quả lời gọi thủ tục "GT_Nam" 8
Hình 4 Kết quả lời gọi thủ tục "sp_sample" 9
Hình 5 Kết quả lời gọi thủ tục "sp_sample2" 10
Hình 6 Kết quả lời gọi thủ tục "sp_sample3" 10
Hình 7 Kết quả lời gọi thủ tục "sp_sample2" 12
Hình 8 Kết quả lời gọi hàm "ChuviHT" 18
Hình 9 Kết quả lời gọi hàm "DDSV" 19
Hình 10 Kết quả lời gọi hàm “Thong_ke” 20
Hình 11 Kết quả lời gọi hàm "ChuviHT" 21
Trang 5MỞ ĐẦU
Trong quá trình vận hành cơ sở dữ liệu, đôi khi chúng ta cần thực hiện liên tục một câu hoặc khối lệnh dài, phức tạp để đáp ứng các nhu cầu quản trị dữ liệu Tuy nhiên, việc một câu lệnh hoặc cấu trúc lệnh được sử dụng liên tục có thể sẽ khiến người dùng gặp phải nhiều vấn đề khó khăn, rắc rối trong quá trình thực hiện Điều này cũng sẽ làm cho hiệu suất của việc thao tác cũng như hiệu suất của cơ sở dữ liệu giảm đáng kể Vì thế một giải pháp hữu ích hơn đã được ra đời, đó chính là việc thực hiện các hàm (function) hoặc các thủ tục lưu trữ (stored procedure)
Microsoft – một trong những nhà tiên phong trong hệ thống quản trị cơ sở dữ liệu với
hệ quản trị cơ sở dữ liệu SQL Server cũng có những chức năng tuyệt vời trong việc sử dụng các đối tượng như là hàm hay thủ tục Và để có thể hiểu rõ hơn cách sử dụng hai đối tượng này thì bài tiểu luận “Tìm hiểu về Stored Procedure và Function trong Microsoft SQL Server” sẽ giúp giải đáp được phần nào về vấn đề này
Trang 6THỦ TỤC LƯU TRỮ (STORED PROCEDURE)
1 Tổng quan về thủ tục
Thủ tục là một nhóm các lệnh thực hiện chức năng nào đó, có thể được gom lại nhằm làm tăng khả năng xử lý, khả năng sử dụng chung, tăng tính bảo mật và an toàn dữ liệu, tiện ích trong quá trình sử dụng
Thủ tục có thể được lưu giữ ngay trong cơ sở dữ liệu như một đối tượng của cơ sở dữ liệu, sẵn sàng cho việc tái sử dụng Thủ tục lúc này được gọi là thủ tục lưu trữ (stored procedure) Với các stored procedure, chúng đã được biên dịch thành dạng p-code vì thế có thể nâng cao khả năng thực hiện các thao tác ví dụ như thêm hoặc cập nhật các bản ghi
2 Phân loại thủ tục
Có thể phân loại cho thủ tục thành:
Thủ tục do người dùng định nghĩa (User-defined Stored Procedure): Là thủ tục do
người dùng tạo ra để thực hiện các thao tác nhằm đáp ứng các nhu cầu hoặc công việc nào
đó
Thủ tục lưu trữ tạm thời (Temporary Stored Procedure): Là một dạng thủ tục do người
dùng xác định được lưu trữ trong CSDL tempdb Có hai loại thủ tục tạm thời bao gồm: cục
bộ và toàn cục Các thủ tục lưu trữ tạm thời cục bộ có tiền tố là (#); chúng chỉ hiển thị với kết nối người dùng hiện tại và sẽ bị xóa khi kết nối bị đóng Các thủ tục tạm thời toàn cục
có hai dấu số (##) là hai ký tự đầu tiên của tên chúng; chúng được hiển thị cho bất kỳ người dùng nào sau khi chúng được tạo và chúng sẽ bị xóa vào cuối phiên cuối cùng bằng cách
sử dụng quy trình
Thủ tục lưu trữ hệ thống (System Stored Procedure): Đây là thủ tục được tích hợp sẵn
trong SQL Server dưới dạng lưu trữ vật lý trong CSDL master và msdb Trong hệ thống, các thủ tục này mang tiền tố là sp_, thường đóng vai trò hỗ trợ cho các DBA các vấn đề liên quan đến quản trị và an ninh dữ liệu
Thủ tục lưu trữ mở rộng (Extended User-Defined Stored Procedure): Các thủ tục mở
rộng cho phép tạo các quy trình bên ngoài bằng ngôn ngữ lập trình chẳng hạn như C Các thủ tục này là các thư viện liên kết động (DLL - Dynamic Link Library) mà một phiên bản của SQL Server có thể tự động tải và khởi động. [1]
3 Thủ tục lưu trữ hệ thống
Trang 7Trong SQL Server, nhiều hoạt động quản trị và thông tin có thể được thực hiện bằng cách sử dụng các thủ tục được lưu trữ hệ thống Các thủ tục được lưu trữ hệ thống được nhóm thành các loại như sau:
Geo-Catalog Stored Procedures
Được sử dụng để triển khai các chức năng từ điển dữ liệu ODBC và tách các ứng dụng ODBC khỏi các thay đổi đối với các bảng hệ thống cơ bản
Change Data Capture
Stored Procedures
Được sử dụng để bật, tắt hoặc báo cáo về các đối tượng chứa dữ liệu thay đổi
Cursor Stored Procedures Được sử dụng để thực hiện chức năng biến con trỏ
Data Collector Stored
Procedures
Được sử dụng để làm việc với bộ thu thập dữ liệu và các thành phần sau: bộ thu thập, mục thu thập và loại bộ sưu tập
Database Engine Stored
Trang 8Firewall Rules Stored
Log Shipping Stored
Dùng để cấu hình kho dữ liệu quản lý
OLE Automation Stored
Procedures
Được sử dụng để kích hoạt các đối tượng tự động hóa tiêu chuẩn để sử dụng trong một lô Transact-SQL tiêu chuẩn Policy-Based Management
Stored Procedures Được sử dụng để quản lý dựa trên chính sách
PolyBase stored procedures Thêm hoặc xóa một máy tính khỏi nhóm PolyBase
scale-out
Query Store Stored
Procedures (Transact-SQL) Được sử dụng để điều chỉnh hiệu suất
Replication Stored
Procedures Được sử dụng để quản lý sao chép
Security Stored Procedures Dùng để quản lý bảo mật
Snapshot Backup Stored
Procedures
Được sử dụng để xóa bản sao lưu FILE_SNAPSHOT cùng với tất cả ảnh chụp nhanh của nó hoặc để xóa ảnh chụp nhanh tệp sao lưu riêng lẻ
Trang 9Spatial Index Stored
Stretch Database Stored
Procedures Được sử dụng để quản lý cơ sở dữ mở rộng
Temporal Tables Stored
Procedures Sử dụng cho bảng thời gian
XML Stored Procedures Được sử dụng để quản lý văn bản XML. [2]
Bảng 1 Các nhóm thủ tục lưu trữ hệ thống
4 Thủ tục do người dùng định nghĩa
4.1 Đặc điểm
Bảo mật cao: Nhiều người dùng và chương trình khách có thể thực hiện các hoạt động
trên các đối tượng cơ sở dữ liệu cơ bản thông qua một thủ tục đóng gói sẵn, ngay cả khi người dùng và chương trình không có quyền trực tiếp trên các đối tượng cơ bản đó Thủ tục kiểm soát những quá trình và hoạt động được thực hiện và bảo vệ các đối tượng cơ sở
dữ liệu bên dưới Điều này loại bỏ yêu cầu cấp quyền ở cấp đối tượng riêng lẻ và đơn giản hóa các lớp bảo mật
Tái sử dụng: Sau khi một thủ tục được hình thành, chúng có thể được gọi ở nhiều nơi
để sử dụng lại
Thực thi nhanh chóng: Máy chủ SQL Server tận dụng lợi thế của việc các đoạn mã
trong thủ tục đã được biên dịch và lưu trữ sẵn trong cơ sở dữ liệu Điều đó đồng nghĩa với việc thủ tục sẽ được thực thi nhanh hơn so do đã được biên dịch từ trước, thay vì phải mất nhiều thời gian để biên dịch các đoạn lệnh được gửi đến SQL Server mà chưa được lưu trữ
Tính nhất quán: Thủ tục lưu trữ thiết lập các ràng buộc dữ liệu để đảm bảo tính nhất
quán Người dùng không thể tùy tiện thao tác với dữ liệu để làm mất tính nhất quán của dữ
Trang 10liệu Đồng thời người dùng cũng không biết được cấu trúc bên dưới của thủ tục làm cho việc sử dụng thủ tục đúng với mục đích nguyên bản
Giảm tải trên đường truyền: Các lệnh trong một thủ tục được thực hiện dưới dạng
một loạt mã duy nhất Điều này có thể làm giảm đáng kể lưu lượng mạng giữa máy chủ và máy khách vì chỉ có lệnh gọi thực thi thủ tục được gửi qua mạng
4.2 Tạo thủ tục
4.2.1 Cú pháp tạo thủ tục
CREATE {PROCEDURE | PROC} [tên_schema]<tên_thủ_tục>
[{@tên_tham_số [type_schema_name] <kiểu_dữ_liệu>}
[ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY] ]
[ WITH RECOMPILE | ENCRYPTION | EXECUTE AS Clause ]
- tên_thủ_tục: Tên của thủ tục, đồng thời phải tuân thủ các quy tắc cho số nhận dạng
và phải là duy nhất trong lược đồ
- @tên_tham_số: Một tham số được khai báo trong thủ tục Chỉ định tên tham số bằng cách sử dụng dấu tại (@) làm ký tự đầu tiên
- [type_schema_name] <kiểu_dữ_liệu>: Kiểu dữ liệu của tham số và lược đồ chứa kiểu dữ liệu
- VARYING: Chỉ định tập kết quả được hỗ trợ làm tham số đầu ra Tham số này được xây dựng động bởi thủ tục và nội dung của nó có thể thay đổi Chỉ áp dụng cho các tham số con trỏ
- default: Giá trị mặc định cho một tham số Nếu một giá trị mặc định được xác định cho một tham số, thủ tục có thể được thực thi mà không cần chỉ định giá trị cho tham
số đó
- OUT | OUTPUT: Chỉ ra rằng tham số là một tham số đầu ra Sử dụng tham số OUTPUT để trả về giá trị cho trình gọi của thủ tục
Trang 11- READONLY: Chỉ ra rằng tham số không thể được cập nhật hoặc sửa đổi trong phần thân của thủ tục
- RECOMPILE: Chỉ định cho thủ tục biên dịch lại mỗi khi được gọi
- ENCRYPTION: Nếu người dùng không có quyền truy cập vào bảng hệ thống hoặc tệp cơ sở dữ liệu thì không thể truy xuất được nội dung của thủ tục
- FOR REPLICATION: Chỉ định rằng thủ tục được tạo để sao chép
- EXECUTE AS: Chỉ định ngữ cảnh bảo mật để thực thi thủ tục được lưu trữ sau khi
nó được truy cập
- [BEGIN] … [END]: Một hoặc nhiều câu lệnh Transact-SQL bao gồm phần thân của thủ tục Bạn có thể sử dụng các từ khóa BEGIN và END tùy chọn để bao gồm các câu lệnh
• Để thực thi thủ tục ta sử dụng:
EXECUTE | EXEC tên_thủ_tục [danh_sách_tham_số];
4.2.2 Tạo thủ tục không chứa tham số
Cho cơ sở dữ liệu quản lý sinh viên gồm các bảng:
- Sinhvien(MaSV, TenSV, GioiTinh, MaLop)
Hình 1 Bảng thông tin sinh viên
- Lop(MaLop, TenLop)
Trang 12Hình 2 Bảng thông tin lớpTạo thủ tục hiển thị thông tin của các sinh viên có giới tính là “Nam”
CREATEPROCEDURE GT_Nam
Hình 3 Kết quả lời gọi thủ tục "GT_Nam"
4.2.3 Tạo thủ tục chứa tham số
• Tạo thủ tục sử dụng tham số đầu vào được gán giá trị mặc định
Tạo thủ tục “sp_sample” liệt kê thông tin của sinh viên có tên “Nguyễn Văn A” CREATE PROCEDURE sp_sample
@Tensv NVARCHAR(30) = N'Nguyễn Văn A'
Trang 13SELECT * FROM dbo.Sinhvien WHERE TenSV=@Tensv
GO
Lời gọi thủ tục: EXEC sp_sample;
Hình 4 Kết quả lời gọi thủ tục "sp_sample"
• Tạo thủ tục sử dụng tham số đầu vào chưa gán giá trị
Tạo thủ tục “sp_sample2” để liệt kê thông tin sinh viên có mã sinh viên là tham số đầu vào:
CREATE PROCEDURE sp_sample2
Trang 14Hình 5 Kết quả lời gọi thủ tục "sp_sample2"
• Tạo thủ tục có tham số đầu ra (OUTPUT)
Tạo thủ tục “sp_sample3” với đầu vào là mã lớp, đầu ra là số lượng sinh viên lớp CREATE PROCEDURE sp_sample3
@malop DECIMAL (18,0), @SL INT OUTPUT
AS
SELECT @SL=COUNT(*)FROM dbo.Sinhvien WHERE Malop=@malop
Lời gọi thủ tục:
DECLARE @SLSV INT
EXEC sp_sample3201 , @SLSV OUTPUT
SELECT @SLSV AS N'Số lượng sinh viên'
Hình 6 Kết quả lời gọi thủ tục "sp_sample3"
Trang 154.3 Sửa và xóa thủ tục
• Sửa thủ tục
Để chỉnh sửa cấu trúc cho thủ tục, ta có thể sử dụng câu lệnh ALTER PROCEDURE
Cú pháp:
ALTER {PROCEDURE | PROC} [tên_schema]<tên_thủ_tục>
[{@tên_tham_số [type_schema_name] <kiểu_dữ_liệu>}
[ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY] ]
[ WITH RECOMPILE | ENCRYPTION | EXECUTE AS Clause ]
[ FOR REPLICATION ]
AS { [BEGIN] Câu_lênh_sql; [END] }
Ví dụ: Sửa thủ tục “sp_sample2” thành thủ tục liệt kê số sinh viên với mã lớp là tham số đầu vào
ALTER PROCEDURE sp_sample2
@Malop DECIMAL(18,0)
AS
SELECT l.TenLop AS N'Tên Lớp', COUNT(s.MaLop) AS N'Số lượng'
FROM dbo.Sinhvien s, dbo.Lop l WHERE s.MaLop = l.MaLop AND s.MaLop =
@Malop GROUP BY s.MaLop, l.TenLop
GO
Lời gọi thủ tục: EXEC sp_sample2 201;
Trang 16Hình 7 Kết quả lời gọi thủ tục "sp_sample2"
Trang 17HÀM (FUNCTION)
1 Tổng quan về hàm
Hàm là một đối tượng trong cơ sở dữ liệu SQL Server Về cơ bản, nó là một tập hợp các câu lệnh SQL thông qua các tham số đầu vào, thực hiện các hành động và trả về kết quả Hàm có thể trả về một giá trị duy nhất hoặc một bảng Không giống như thủ tục, hàm không thể sử dụng để thực hiện các thao tác như chèn, cập nhật, xóa các bản ghi trong các bảng cơ sở dữ liệu
Hàm cũng có những điểm tương đồng với thủ tục đều là nhóm các lệnh thực hiện chức năng nào đó, tuy nhiên hàm lại trả về một giá trị ngay tại lời gọi của nó mà không phải dùng tham số OUTPUT như thủ tục vì vậy nó có thể sử dụng trong các truy vấn SQL một cách linh hoạt Có thể sử dụng hàm trong các trường hợp như:
- Trong các câu lệnh Transact-SQL chẳng hạn như SELECT
- Trong các ứng dụng gọi hàm
- Trong một hàm khác do người dùng định nghĩa
- Để tham số hóa khung nhìn hoặc cải thiện chức năng của khung nhìn được lập chỉ mục
Hàm có sẵn: Còn được biết đến là hàm hệ thống (System Functions) Là hàm được tạo sẵn
trong SQL Server mà bạn có thể sử dụng để thực hiện nhiều hoạt động khác nhau Đồng thời chúng cũng không thể bị sửa đổi bởi người dùng
Hàm do người dùng định nghĩa: Là các hàm không có sẵn mà do chính người dùng tạo nên
bằng các câu lệnh T-SQL Trong đó chia thành:
+ Hàm vô hướng (Scalar Function): Các hàm vô hướng do người dùng định nghĩa trả
về một giá trị dữ liệu duy nhất của kiểu được xác định trong mệnh đề RETURNS Đối với một hàm vô hướng nội tuyến, giá trị vô hướng trả về là kết quả của một câu
Trang 18các câu lệnh Transact-SQL trả về một giá trị duy nhất Kiểu trả về có thể là bất kỳ kiểu dữ liệu nào ngoại trừ text, ntext, image, cursor và timestamp
+ Hàm kiểu bảng (Table-Valued Functions): Các hàm kiểu bảng do người dùng định nghĩa trả về một kiểu dữ liệu bảng có thể sử dụng như một bảng thông thường Đối với một hàm có giá trị bảng nội tuyến, không có thân hàm thì bảng là tập hợp kết quả của một câu lệnh SELECT
APPROX_COUNT_DISTINCT, AVG, COUNT, COUNT_BIG, GROUPING, GROUPING_ID, MAX, MIN, SUM, VAR, VARP
Configuration
Functions
Hàm thực hiện trả về thông tin
về cài đặt tùy chọn cấu hình hiện tại
Mathematical
Functions
Hàm thực hiện các phép tính, thường dựa trên các giá trị đầu vào được cung cấp dưới dạng đối số và trả về một giá trị số
ABS, PI, POWER, RAND, ROUND, FLOOR, CEILING, SIGN, SQRT
Metadata
Functions
Hàm vô hướng trả về thông tin
về cơ sở dữ liệu và các đối tượng
cơ sở dữ liệu
OBJECT_ID, OBJECT_NAME, OBJECT_SCHEMA_NAME, OBJECTPROPERTY,
Trang 19Functions Một số hàm khác
CAST, COALESCE, CONVERT, GETANSINULL, HOST_ID Bảng 2 Các loại hàm hệ thống
4 Hàm do người dùng định nghĩa
4.1 Đặc điểm
Hàm do người dùng định nghĩa có những đặc điểm sau:
Cho phép lập trình mô-đun: Người dùng có thể tạo hàm và lưu trữ chúng trong cơ sở
dữ liệu và gọi hàm bất cứ lúc nào trong chương trình của bản thân Các hàm do người dùng định nghĩa có thể được sửa đổi độc lập với mã nguồn của chương trình
Cho phép thực thi nhanh hơn: Tương tự như các thủ tục lưu trữ, các hàm do người dùng xác định trong Transact-SQL làm giảm quá trình biên dịch mã Transact-SQL bằng cách lưu vào bộ nhớ đệm các kế hoạch và sử dụng lại chúng cho các lần thực thi lặp lại Điều này có nghĩa là hàm do người dùng xác định không cần phải chạy lại và mở lại sau mỗi lần sử dụng, dẫn đến thời gian thực thi nhanh hơn nhiều
Giảm lưu lượng trên đường truyền: Một hoạt động lọc dữ liệu dựa trên một số ràng buộc phức tạp không thể được biểu thị trong một biểu thức vô hướng duy nhất có thể được biểu diễn dưới dạng một hàm Sau đó, hàm có thể được gọi trong mệnh đề WHERE để giảm số câu lệnh được gửi đến máy khách. [4]
Hàm do người dùng định nghĩa có thể chia thành 2 loại:
– Hàm vô hướng (Scalar Function): Hàm trả về giá trị vô hướng theo kiểu dữ liệu của SQL