Phần 4 bài giảng Hệ quản trị cơ sở dữ liệu: Lập trình trên SQL Server cung cấp cho người học các kiến thức: Thủ tục lưu trữ, phân loại thủ tục lưu trữ, tạo thủ tục lưu trữ, tạo thủ tục lưu trữ bằng T-SQL,... Mời các bạn cùng tham khảo.
Lập trình SQL Server L Ạ I HI Ề N P HƯƠ NG BỘ M ÔN HT T T – K H OA CN T T E M A I L: L HP HUON G@TLU.EDU.VN LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Thủ tục lưu trữ (Stored Procedures) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Khái niệm Thủ tục lưu trữ (Stored Procedure) đối tượng CSDL bao gồm tập nhiều câu lệnh SQL nhóm lại với thành nhóm LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Đặc điểm Có thể nhận tham số truyền vào Có thể gọi thủ tục khác Trả giá trị thông qua tham số Chuyển giá trị tham số cho thủ tục gọi Trả giá trị trạng thái thủ tục thành công hay không thành công LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Ưu điểm Lập trình theo module: thủ tục xây dựng lần CSDL, gọi nhiều lần hay nhiều ứng dụng Thực nhanh hơn: thực thủ tục lưu trữ nhanh thực lượng lớn câu lệnh T-SQL máy chủ nhận câu lệnh phải kiểm tra tính hợp lệ quyền tài khoản từ máy khách LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Ưu điểm (tiếp) Làm giảm lưu lượng mạng: cần gửi câu lệnh gọi thủ tục thay phải gửi tập dòng lệnh từ ứng dụng đến máy chủ An ninh bảo mật hơn: thay cấp phát quyền trực tiếp cho người sử dụng câu lệnh SQL đối tượng CSDL, ta cấp quyền cho người sử dụng thông qua thủ tục lưu trữ Việc gán quyền giúp cho vấn đề an ninh bảo mật CSDL tốt LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Phân loại thủ tục lưu trữ System stored procedure: Thủ tục lưu trữ CSDL Master Bắt đầu chữ sp_ Thường sử dụng quản trị CSDL an ninh bảo mật Ví dụ: Muốn biết tất tiến trình thực user ‘sa’ sp_who @loginame = ‘sa’ LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Phân loại thủ tục lưu trữ (tiếp) Extended stored procedure: Thủ tục sử dụng chương trình ngoại vi biên dịch thành DLL Bắt đầu chữ xp_ Ví dụ: Xp_sendmail dùng gửi mail Xp_cmdshell dùng thực lệnh DOS xp_cmdshell ‘dir c:\’ LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Phân loại thủ tục lưu trữ (tiếp) Local stored procedure: Nằm CSDL người dùng tạo ra, thực cơng việc Có thể tạo CSDL master Temporary stored procedure: Tương tự local store procedure tạo CSDL TempDB Thủ tục tự hủy kết nối tạo ngắt SQL Server ngưng hoạt động Remote stored procedure: Thủ tục sử dụng thủ tục server khác LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL Tạo thủ tục lưu trữ Bằng SQL Server Management Studio: Chọn CSDL cần tạo thủ tục Chọn Stored Procedures, kích chuột phải chọn New Stored Procedure Đặt tên thủ tục, xác định role người khai thác soạn kịch câu lệnh LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 10 Thủ tục trả biến kiểu trỏ (tiếp) Gọi thủ tục: cần khai báo biến kiểu trỏ Sau sử dụng bình thường LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 31 Một số tập Bài tập 1: Viết thủ tục Sp_Update_SV có tham số dùng để cập nhật liệu cho sinh viên biết MaSV bảng SinhVien Bài tập 2: Viết thủ tục dùng để lấy điểm trung bình mơn học lớp, SV nữ, sinh viên Nam với Tên môn học tham số truyền vào Chú ý: tập thực CSDL QLSV với SinhVien(MaSV, HoTen, GioiTinh, DiaChi,Email) MonHoc(MaMon, TenMon, MoTa) KETQUA(MaSV, MaMon, Diem) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 32 Hàm người dùng định nghĩa (User-defined function) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 33 Khái niệm hàm Hàm đối tượng CSDL tương tự thủ tục Hàm trả giá trị thơng qua tên hàm Có thể sử dụng hàm thành phần biếu thức Có loại hàm: Hàm hệ quản trị CSDL cung cấp sẵn (đã học) Hàm người dùng định nghĩa nhằm phục vụ cho mục đích riêng LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 34 Các loại hàm Scalar: trả giá trị Inline Table-valued: Sử dụng câu lệnh select để trả tập row Multi-statement Table-valued: sử dụng nhiều câu lệnh để trả tập row LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 35 Định nghĩa hàm vô hướng Cú pháp CREATE FUNCTION [Tên_người_tạo.] Tên_hàm ([danh_sách_tham_số]) RETURNS kiểu_dữ_liệu_trả_về_của_hàm [WITH các_tùy_chọn] AS BEGIN Các_câu_lệnh_của_hàm END LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 36 Định nghĩa hàm vô hướng (tiếp) Danh sách tham số danh sách tham số đầu vào hàm, tham số khai báo sau: @tên_tham_số kiểu_dữ_liệu [ = giá_trị_mặc_định] Kiểu liệu trả hàm kiểu liệu vô hướng Các tùy chọn tương tự với thủ tục LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 37 Ví dụ hàm vơ hướng Viết hàm tính số lượng Sinh viên thi môn ‘Hệ Quản trị CSDL’ LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 38 Cách sử dụng hàm Khi thi hành hàm, ý cần dùng tên đầy đủ Có thể sử dụng hàm mệnh đề Where: Ví dụ: Hiển thị tên mơn học có số lượng người thi nhiều môn ‘Hệ Quản trị CSDL’ Select TenMon from MonHoc Where dbo.slSV_mon(TenMon) >= dbo.slSV_mon(N’Hệ Quản trị CSDL’) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 39 Định nghĩa hàm trả kết bảng Cú pháp CREATE FUNCTION [Tên_người_tạo.] Tên_hàm ([danh_sách_tham_số]) RETURNS @bien TABLE(danh_sách_cột) [WITH các_tùy_chọn] AS BEGIN Các_câu_lệnh_của_hàm END LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 40 Ví dụ hàm trả bảng Viết hàm trả danh sách sinh viên thi mơn học đó, tên môn truyền vào qua tham số LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 41 Gọi hàm trả bảng Sử dụng hàm trả kết bảng Table LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 42 Định nghĩa hàm trả kết bảng Cú pháp CREATE FUNCTION [Tên_người_tạo.] Tên_hàm ([danh_sách_tham_số]) RETURNS TABLE AS return (Câu_lệnh_SELECT) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 43 Ví dụ với cú pháp Ví dụ: Viết hàm trả danh sách sinh viên sinh sau ngày đó, ngày truyền vào qua tham số Gọi hàm: Bài tập Bài 1: Viết hàm tính độ tuổi trung bình Sinh Viên bảng SinhVien Bài 2: Viết hàm trả danh sách mơn thi sinh viên có điểm cao điểm trung bình tất mơn sinh viên ... Nội LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 27 Tham số với giá trị mặc định (tiếp) Gọi thủ tục Sử dụng giá trị mặc định (tỉnh Hà Nội) Sử dụng giá trị tham số truyền vào LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ... người khai thác soạn kịch câu lệnh LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 10 Tạo thủ tục lưu trữ (tiếp) LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 11 Tạo thủ tục lưu trữ T -SQL Cú pháp CREATE PROCEDURE Tên_thủ_tục... qua tham số LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 24 Thủ tục sử dụng tham số lấy giá trị (tham trị) Cách gọi thủ tục: Phải khai báo biến để lưu giá trị trả LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 25 Tham