Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,02 MB
Nội dung
TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHỐ HỒ CHÍ MINH KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ BÀI TIỂU LUẬN HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỚNG Đề tài: TÌM HIỂU VỀ STORE PROCEDURE VÀ FUNCTION TRONG SQL Giảng viên hướng dẫn: ThS Nguyễn Văn Thọ Sinh viên thực hiện: Lê Nhật Vy MSSV: 030235190193 Lớp: ITS326_211 _D03 Tp.HCM, ngày 15 tháng 11 năm 2021 LỜI NÓI ĐẦU "Đầu tiên, em xin gửi lời cảm ơn chân thành đến giảng viên ThS Nguyễn Văn Thọ - Giảng viên khoa Hệ thống thông tin quản lý dạy dỗ, truyền đạt tận tâm kiến thức quý báu cho em suốt thời gian học tập vừa qua Trong thời gian tham gia lớp học Lập trình hướng đối tượng thầy, em trang bị thêm cho nhiều kiến thức bổ ích, tinh thần học tập hiệu quả, nghiêm túc Những kiến thức bệ phóng cho tương lai phát triển em sau Tuy nhiên, vốn kiến thức nhiều hạn chế khả tiếp thu cịn nhiều thiếu sót Mặc dù em cố gắng chắn tiểu luận khó tránh khỏi thiếu sót nhiều chỗ cịn chưa xác, kính mong thầy xem xét góp ý để tiểu luận em hoàn thiện hơn, chỉnh chu logic Em xin chân thành cảm ơn!” MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC NHẬN XÉT CỦA GIẢNG VIÊN DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH ẢNH CHƯƠNG I THỦ TỤC LƯU TRỮ (STORED PROCEDURE) Tổng quan thủ tục Phân loại thủ tục Thủ tục lưu trữ hệ thống Thủ tục người dùng định nghĩa 4.1 Đặc điểm 4.2 Tạo thủ tục 10 4.2.1 Cú pháp 10 4.3 Sửa thủ tục 11 4.4 Xóa thủ tục 11 4.5 Ví dụ tổng quát 11 CHƯƠNG II HÀM (FUNCTION) 19 Tổng quan hàm 19 Phân loại hàm 19 Hàm người dùng định nghĩa 19 3.1 Scalar function 19 3.2 Table function 23 3.3 Xóa hàm 29 KẾT LUẬN 30 TÀI LIỆU THAM KHẢO 30 NHẬN XÉT CỦA GIẢNG VIÊN DANH MỤC CÁC BẢNG Bảng 1: Thủ tục lưu trữ hệ thống DANH MỤC CÁC HÌNH ẢNH Hình 1: Tạo thủ tục lưu trữ 12 Hình 2: Thực thi thủ tục tạo 13 Hình 3:Kết thủ tục vừa tạo 14 Hình 4: Kết thực thi thủ tục lưu trữ chứa tham số 15 Hình 5: Kết thực thi truyền hai đối số 17 Hình 6: Kết thực thi tham số chuỗi 18 Hình 7: Bảng sales.order_iteams 21 Hình 8: Scalar function Programmability 22 Hình 9: Table Function Programmability 25 Hình 10: Thực thi table function 26 Hình 11:Kết thực thi câu lệnh sửa đổi 27 Hình 12: Kết thực thi đa câu lệnh 29 CHƯƠNG I THỦ TỤC LƯU TRỮ (STORED PROCEDURE) Tổng quan thủ tục Là đoạn chương trình kịch (programming scripts) với câu lệnh SQL nhúng (embedded SQL) lưu dạng biên dịch thi hành thực tiếp SQL server Thủ tục lưu trữ cho phép lưu trữ logic ứng dụng CSDL Khi gọi thủ tục lưu trữ lần đầu tiên, SQL Server tạo lịch thực thi lưu trữ nhớ đệm Ở lần gọi hàm tiếp theo, SQL Server sử dụng sử dựng lại lịch thực thi lưu nhanh với hiệu xuất đáng tin cậy Thủ tục lưu trữ mã SQL chuẩn bị sẵn mà bạn lưu, đoạn mã sử dụng lại nhiều lần Vì vậy, bạn có truy vấn SQL mà bạn viết viết lại nhiều lần, lưu dạng thủ tục lưu trữ, sau cần gọi để thực thi Cũng chuyển tham số cho thủ tục lưu trữ, để thủ tục lưu trữ hoạt động dựa (các) giá trị tham số truyền vào Người dùng lựa chọn sử dụng Thủ tục lưu trữ để giảm dư thừa mã chương trình, cải thiện tốc độ thực thi câu lệnh, bảo trì dễ dàng an ninh tốt Phân loại thủ tục Thủ tục người dùng định nghĩa: Là thủ tục người dùng tạo để thực thao tác nhằm đáp ứng nhu cầu công việc riêng Thủ tục lưu trữ tạm thời: Là dạng thủ tục người dùng xác định lưu trữ CSDL tempdb Có loại thủ tục tạm thời bao gồm: cục toàn cục Các thủ tục lưu trữ tạm thời cục có tiền tố (#); chún hiển thị với kết nối người dùng bị xóa kết nối bị đóng Các thủ tục tạm thời tồn cục có hai dấu (##) hai ký tự tên; chúng hiển thị cho người dùng sau chúng tạo chúng bị xóa vào cuối phiên cách sử dụng quy trình Thủ tục lưu trữ hệ thống: Đây thủ tục tích hợp sẵn SQL Server dạng lưu trữ vật lý CSDL master msdb Trong hệ thống, thủ tục mang tiền sp_, thường đóng vai trị hỗ trợ cho DBA vấn đề liên quan đến quản trị an ninh liệu Thủ tục lưu trữ mở rộng: Các thủ tục mở rộng cho phép tạo quy trình bên ngồi ngơn ngữ lập trình chẳng hạn C Các thủ tục thư viện liên kết động mà phiên SQL Server có thẻ tự động tải khởi động Thủ tục lưu trữ hệ thống Các đặc điểm loại thủ tục lưu trữ hệ thống thống kê bảng sau: Tên thủ tục Đặc điểm chi tiết Active Geo-Replication Được sử dụng để quản lý cấu hình Active Geo- Stored Procedures Replication Cơ sở liệu Azure SQL Catalog Stored Procedures Được sử dụng để triển khai chức từ điển liệu ODBC tách ứng dụng ODBC khỏi thay đổi bảng hệ thống Change Data Capture Stored Được sử dụng để bật, tắt báo cáo đối Procedures tượng chứa liệu thay đổi Cursor Stored Procedures Được sử dụng để thực chức biến trỏ Data Collector Stored Được sử dụng để làm việc với thu thập liệu Procedures thành phần sau: thu thập, mục thu thập loại sưu tập Database Engine Stored Được sử dụng để bảo trì chung SQL Server Procedures Database Engine Database Mail Stored Được sử dụng để thực hoạt động email từ bên Procedure (Transact SQL) phiên SQL Server Database Maintenance Plan Được sử dụng để thiết lập nhiệm vụ bảo trì cốt lõi Stored Procedures yêu cầu để quản lý hiệu suất sở liệu Distributed Queries Stored Được sử dụng để thực quản lý truy vấn Procedures phát tán Filestream and FileTable Được sử dụng để cấu hình quản lý tính Stored Procedures FileStream FileTable Firewall Rules Stored Được sử dụng để cấu hình Firewall sở liệu Procedures Azure SQL Full-Text Search Stored Được sử dụng để triển khai truy vấn mục Procedures toàn văn General Extended Stored Được sử dụng để định cấu hình, sửa đổi giám sát Procedures nhật ký cấu hình vận chuyển Log Shipping Stored Được sử dụng để định cấu hình, sửa đổi giám sát Procedures nhật ký cấu hình vận chuyển Management Data Warehouse Dùng để cấu hình kho liệu quản lý Stored Procedures OLE Automation Stored Dùng để kích hoạt đối tượng tự động hóa tiêu Procedures chuẩn để sử dụng lô Transact SQL tiêu chuẩn Policy-Based Management Được sử dụng để quản lý dựa sách Stored Produres PolyBase stored procedures Thêm xóa mát tính khỏi nhóm PolyBase scale-out Query Store Stored Được sử dụng để quản lý chép Procedures Security Stored Procedures Quản lý bảo mật Snapchot Backup Stored Xóa lưu file_snapshot với tất ảnh Procedures chụp nhanh để xóa ảnh chụp nhanh tệp lưu riêng lẻ Spitial Indext Stored Được sử dụng để phân tích cải thiện hiệu suất lập Procedures mục mục không gian SQL Server Agent Stored Theo dõi hiệu suất hoạt động Procedures SQL Server Profiler Stored Được sử dụng bở SQL Server Agent để quản ;ý Procedures hoạt động theo lịch trình theo hướng kiện Stretch Database Stored Được sử dụng để quản lý sở liệu mở rộng Procedures Tempotal Tables Stored Sử dụng cho bảng thời gian Procedures XML Stored Procedures Được sử dụng để quản lý văn XML Bảng 1: Thủ tục lưu trữ hệ thống Thủ tục người dùng định nghĩa 4.1 Đặc điểm Module hóa: Bạn cần viết Stored Procedure lần, sau gọi nhiều lần ứng dụng Hiệu suất: Thủ tục lưu trữ thực thi mã nhanh giảm tải băng thông, thủ tục lưu trữ biên dịch lưu vào nhớ tạo Điều có nghĩa thực thi nhanh so với việc gửi tình đoạn lệnh SQL tới SQL Server Vì bạn gửi đoạn lệnh nhiều lần SQL Server phải biên dịch lại nhiều lần, thời gian so với việc biên dịch sẵn Giảm tải thông: Nếu bạn gửi nhiều câu lệnh SQL thông qua network đến SQL Server ảnh hưởng tới hiệu suất đường truyền Thay gửi nhiều lần bạn gom câu lệnh SQL vào Stored Procedure phải gọi đến lần qua network Bảo mật: Trong SQL Server có tác vụ cấp cao mà người dùng bình thường khơng thể truy cập vào Bằng việc cung cấp Stored Procedure truy cập tới tác vụ cho người dùng thường khơng hết Vì làm người dùng thường truy cập gián tiếp mà không ảnh hưởng tới vấn đề bảo mật SQL Server 4.2 Tạo thủ tục 4.2.1 Cú pháp CREATE {PROCEDURE|PROC}[tên_schema] [{@tên_tham_số [type_schema_name]} [VARYING||= default||OUT||OUTPUT||READONLY]] [ WITH RECOMPILE|ENCRYPTION|EXECUTE AS Clause] [ FOR REPLICATION|AS{[BEGIN] Câu_lệnh_SQL; [END] } Trong đó: - Tên_schema: tên lược đồ chứa thủ tục, thủ tục bị ràng buộc lược đồ - Tên_thủ_tục: tên thủ cục, tuân thủ quy tắc cho số nhận dạng phải lược đồ - @tên_tham_số: định tên tham só cách sử dụng dấu @ - [type_schema_name] : kiểu liệu tham số lược đồ chứa kiểu liệu - VARYING: tập kết hỗ trợ làm tham số đầu - Default: Giá trị mặc định cho tham số Nếu giá trị mặc định xác định cho tham số, thủ tục thực thi mà không cần định giá trị cho tham số - OUT | OUTPUT: tham số tham số đầu - READONLY: tham số cập nhật sửa đổi - RECOMPILE: cho thủ tục biên dịch lại gọi - ENCRYPTION: người dùng khơng có quyền truy cập vào bảng hệ thống tệp sở liệu khơng thể truy xuất nội dung thủ tục - FOR REPLICATION: thủ tục chép 10 4.5.7 Tạo thủ tục lưu trữ có nhiều tham số Câu lệnh sau sửa đổi thủ tục lưu trữ uspFindProducts thêm tham số có thêm @max_list_price: ALTER PROCEDURE uspFindProducts ( @min_list_price AS DECIMAL, @max_list_price AS DECIMAL ) AS BEGIN SELECT product_name, list_price FROM production.products WHERE list_price >= @min_list_price AND list_price = @min_list_price AND list_price Functions >Scalar-valued Function: Hình 8: Scalar function Programmability 3.1.3 Gọi scalar function Chúng ta gọi Scalar function sau: SELECT sales.udfNetSale(10,100,0.1) net_sale; Sử dụng function sales.udfNetSale để thu doanh thu đơn hàng bảng order_items: SELECT order_id, SUM(sales.udfNetSale(quantity, list_price, discount)) net_amount FROM sales.order_items 22 GROUP BY order_id ORDER BY net_amount DESC; 3.1.4 Chỉnh sửa scalar function Câu lệnh: ALTER FUNCTION Cú pháp: ALTER FUNCTION [schema_name.]function_name ( parameter_list ) RETURN data_type AS BEGIN statements RETURN value END 3.1.5 Xóa scalar function Câu lệnh: DROP FUNCTION Cú pháp: DROP FUNCTION [schema_name.]function_name; 3.2 Table function 3.2.1 Định nghĩa 23 Table function (hàm bảng) function người dùng tự định nghĩa trả liệu kiểu bảng Kiểu trả table function bảng, bạn sử dụng table function giống bảng 3.2.2 Tạo table function Câu lệnh sau tạo table fuction trả danh sách sản phẩm bao gồm tên sản phẩm, năm model, giá niêm yết: CREATE FUNCTION udfProductInYear ( @model_year INT ) RETURNS TABLE AS RETURN SELECT product_name, model_year, list_price FROM production.products WHERE model_year = @model_year; 24 Khi table function tạo, tìm tháy Programmability > Functions > Table-valued Functions: Hình 9: Table Function Programmability 3.2.3 Thực thi table function Để thực thi table function ta sử dụng mệnh đề FROM vủa SELECT sau: SELECT * FROM udfProductInYear(2017); 25 Hình 10: Thực thi table function 3.2.4 Sửa đổi table function Ta sử dụng từ khóa ALTER ví dụ sau: ALTER FUNCTION udfProductInYear ( @start_year INT, @end_year INT ) RETURNS TABLE AS RETURN SELECT product_name, model_year, list_price FROM 26 production.products WHERE model_year BETWEEN @start_year AND @end_year Hình 11:Kết thực thi câu lệnh sửa đổi 3.2.5 Table function đa câu lệnh Table function đa câu lệnh function có nhiều câu lệnh trả giá trị bảng Table function hữu ích bạn thực nhiều truy vấn function tổng hợp kết trả CREATE FUNCTION udfContacts() RETURNS @contacts TABLE ( first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(255), phone VARCHAR(25), contact_type VARCHAR(20) ) AS 27 BEGIN INSERT INTO @contacts SELECT first_name, last_name, email, phone, 'Staff' FROM sales.staffs; INSERT INTO @contacts SELECT first_name, last_name, email, phone, 'Customer' FROM sales.customers; RETURN; END; Lệnh thực thi: SELECT * FROM udfContacts(); 28 Hình 12: Kết thực thi đa câu lệnh 3.3 Xóa hàm Cú pháp: DROP FUNCTION [ IF EXISTS ] [ schema_name ] function_name; Trong đó: - Tùy chọn IF EXISTS cho phép bạn xóa function tồn - Tùy chọn schema_name định tên lược đồ mà function người dùng tự định nghĩa thuộc Tên lược đồ tùy chọn - Function_name tên function muốn xóa 29 KẾT LUẬN Có thể thấy việc sử dụng hàm thủ tục SQL Server mang đến nhiều tiện ích cho người dùng, với khai thác liệu mà hai đối tượng hướng đến, chúng đóng vai trị quan trọng việc quản trị sở liệu Cộng thêm ưu điểm bật mình, SQL Server lựa hàng đầu hầu hết doanh nghiệp lẫn người dùng cá nhân SQL Server chứng minh dễ sử dụng, tính bảo mật cao, cộng đồng người dùng đơng đảo Từ lí đó, dễ hiểu SQL Server nằm top hệ quản trị sở liệu hàng đầu suất nhiều năm TÀI LIỆU THAM KHẢO Comdy (2020) Retrieved from https://comdy.vn/sql-server/function-trong-sql-server/ Microsoft (2020) Retrieved from https://docs.microsoft.com/en-us/azure/azuresql/database/ Viblo (2020) Retrieved from https://viblo.asia/p/stored-procedure-va-trigger-trong-sqlserver-Az45bPV6ZxY Waka (2017) Retrieved from https://waka.vn/static/news/0/0/0/4_1_Waka_Cong%20bo%20so%20lieu%20Q2_ Ver_Vi.pdf?fbclid=IwAR0D5qucmbpVbPN-ShWjvlrSP5WOnwHjktrL2lvhzp5_bBWsj0piCZrINo 30 ... PolyBase scale-out Query Store Stored Được sử dụng để quản lý chép Procedures Security Stored Procedures Quản lý bảo mật Snapchot Backup Stored Xóa lưu file_snapshot với tất ảnh Procedures chụp nhanh... Spitial Indext Stored Được sử dụng để phân tích cải thiện hiệu suất lập Procedures mục mục không gian SQL Server Agent Stored Theo dõi hiệu suất hoạt động Procedures SQL Server Profiler Stored Được... https://comdy.vn /sql- server /function- trong- sql- server/ Microsoft (2020) Retrieved from https://docs.microsoft.com/en-us/azure/azuresql/database/ Viblo (2020) Retrieved from https://viblo.asia/p/stored -procedure- va-trigger -trong- sqlserver-Az45bPV6ZxY