Storedprocedures gì? StoredProcedures Stored procedure tập lệnh T-SQL tất lệnh thực thi sp thực thi – Trần Thị Bạch Huệ Tại phải sử dụng Storedprocedures Nội dung T-SQL ngơn ngữ giúp giao tiếp ứng dụng database SQL Server Storedprocedures (sp) Tại phải sử dụng storedprocedures Tạo, xoá stored procedure Thực thi stored procedure Tham số với giá trị mặc định Giá trị trả stored procedure Sửa đổi store procedure Giúp gom nhóm lệnh T-SQL thành lệnh Điều giúp giảm thiểu lưu thông mạng Sp phân tích, tối ưu tạo nên việc thực thi chúng nhanh nhiều so với việc phải thực thi lệnh SQL tương đương SQL Server biên dịch sp lần sử dụng lại kết biên dịch lần sau (trừ người dùng có thiết lập khác) Điều không làm ảnh hưởng đến hiệu suất hệ thống sp gọi liên tục nhiều lần Có loại stored procedure – – Stored procedure khơng có tham số (biến truyền vào) Stored procedure có tham số Mỗi tham số định nghĩa theo cú pháp @tên_tham_số KDL [in | out ] đó: in định nghĩa tham số vào out định nghĩa tham số Tạo StoredProcedures Tạo storedprocedures lệnh: CREATE PROCEDURE tên_sp [(ds tham số) ] [WITH RECOMPILE | ENCRYTION | RECOMPILE, ENCRYTION] AS Các_câu_lệnh_của_sp Trong đó: WITH RECOMPILE: Yêu cầu SQL Server biên dịch lại sp gọi WITH ENCRYTION: Yêu cầu SQL Server mã hoá sp Các_câu_lệnh_của_sp: Các lệnh T-SQL Ví dụ: Tạo sp tính tổng số nguyên CREATE PROCEDURE sp_Tong (@So1 int, @So2 int) AS Begin declare @tong int SET @Tong = @So1 + @So2; print @Tong End (Tham khảo thêm ví dụ trang 62) Tham số với giá trị mặc định Xoá stored procedure Xoá stored procedure lệnh: DROP PROCERE tên_sp Ví dụ: Xố sp_Tong DROP PROC sp_Tong Các tham số sp phải truyền vào lúc thực thi sp Tuy nhiên, chúng khơng cần phải truyền từ vào mà lấy giá trị mặc định Tham số với giá trị mặc định khai báo theo cú pháp @tên_tham_số KDL = giá_trị_mặc_định 11 Thực thi stored procedure 10 Thực thi sp lệnh: Execute tên_sp [ds_các_đối_số] Ví dụ: Thực thi sp_Tong EXEC sp_Tong 1, Ví dụ: Chỉnh sửa lại sp_Tong sau ALTER PROCEDURE sp_Tong (@So1 int = 1, @So2 int = 2) AS Begin declare @tong int SET @Tong = @So1 + @So2; print @Tong End 12 Ví dụ: Thực thi sp_Tong EXEC sp_Tong Nhận xét: Lệnh thực thi không sinh lỗi không truyền giá trị cho đối số @So1 @So2 chúng lấy giá trị mặc định Kết việc thực thi sp_Tong xuất kết giá trị 13 Ví dụ: ALTER PROCEDURE sp_Tong (@So1 int, @So2 int, @Tong int) AS Begin SET @Tong = @So1 + @So2; End Thực thi sp_Tong 15 Giá trị trả stored procedure Nếu đối số truyền cho sp (trong lúc gọi sp) biến thay đổi giá trị biến sp không giữ lại kết thúc việc thực thi sp DECLARE @ketqua int SET @ketqua = EXEC sp_Tong 2,3, @ketqua print @ketqua 14 Kết xuất bao nhiêu? 16 Nếu muốn giữ lại giá trị đối số sau kết thúc thủ tục, phải khai báo tham số sp theo cú pháp sau @tên_tham_số KDL OUT 17 Thực thi sp_Tong Declare @ketqua int set @ketqua=0 Exec sp_Tong 2, 3, @ketqua out Select @ketqua Kết xuất bao nhiêu? Sử dụng lệnh RETURN Ví dụ: ALTER PROCEDURE sp_Tong (@So1 int, @So2 int) AS Begin declare @Tong int SET @Tong = @So1 + @So2; return @Tong End 19 18 Ví dụ: Tạo sp tính tổng số nguyên CREATE PROCEDURE sp_Tong (@So1 int, @So2 int, @Tong int out) AS Begin SET @Tong = @So1 + @So2; End (Tham khảo thêm ví dụ trang 63) 20 Thực thi sp_Tong DECLARE @ketqua int SET @ketqua = EXEC @ketqua = sp_Tong 2,3 print @ketqua Kết xuất bao nhiêu? 21 23 Sửa đổi store procedure Bài tập Sửa đổi sp theo lệnh ALTER PROCEDURE tên_sp [(ds tham số) ] [WITH RECOMPILE | ENCRYTION | RECOMPILE, ENCRYTION] AS Các_câu_lệnh_của_sp 22 Ví dụ: Chỉnh sửa sp_Tong ALTER PROCEDURE sp_Tong (@So1 int, @So2 int) AS Begin declare @tong int SET @Tong = @So1 + @So2; print @Tong End Lấy tồn thơng tin sinh viên Lấy tồn thơng tin sinh viên khoa CNTT Lấy tồn khoa chưa có sinh viên Lấy thơng tin sinh viên có họ người dùng nhập vào Lấy thơng tin sinh viên có tên người dùng nhập vào Lấy thơng tin sinh viên có họ tên người dùng nhập vào 24 Tạo sp để xuất thông báo “đủ số lượng” “không đủ số lượng” – – Tạo sp xuất kết cột: hosv, tensv, ns, diem, ketqua – “đủ số lượng” số sinh viên từ 10 trở lên Ngược lại “không đủ số lượng” – Tạo sp để thêm dòng vào bảng sinh viên với liệu người dùng nhập vào Tạo sp để thêm dòng vào bảng sinh viên 25 Cột ketqua có giá trị đậu điểm mơn lớn Ngược lại rớt Thêm dòng vào bảng kết với liệu người dùng nhập vào trước thêm phải kiểm tra xem mã sv người dùng nhập vào có thuộc bảng sinhvien hay khơng Nếu khơng báo lỗi Thêm dòng vào bảng kết với liệu người dùng nhập vào trước thêm cần kiểm tra: 27 26 Tạo sp để xuất kết theo mẫu sau đậu (điểm >= 5) nguyen A nguyen B không đậu (điểm < ) nguyen C nguyen D – – – – Mã sv người dùng nhập vào có thuộc bảng sinhvien hay không Nếu không báo lỗi Mã môn học người dùng nhập vào có thuộc bảng mơn học hay không Nếu không báo lỗi Điểm phải từ đến 10 Nếu không báo lỗi Mã sinh viên mã môn học người dùng nhập vào phải có giá trị Nếu khơng báo lỗi 28 Tạo sp cho phép chỉnh sửa họ tên sinh viên A01 thành Trần Bình Trọng Tạo sp cho phép chỉnh sửa họ tên sinh viên A01 theo liệu người dùng nhập vào Tạo sp để liệt kê khoa có sinh viên 29 Trả lời thắc mắc 30 ... @tên_tham_số KDL [in | out ] đó: in định nghĩa tham số vào out định nghĩa tham số Tạo Stored Procedures Tạo stored procedures lệnh: CREATE PROCEDURE tên_sp [(ds tham số) ] [WITH RECOMPILE | ENCRYTION... Có loại stored procedure – – Stored procedure khơng có tham số (biến truyền vào) Stored procedure có tham số Mỗi tham số định nghĩa theo cú... @So2; print @Tong End (Tham khảo thêm ví dụ trang 62) Tham số với giá trị mặc định Xoá stored procedure Xoá stored procedure lệnh: DROP PROCERE tên_sp Ví dụ: Xố sp_Tong DROP PROC sp_Tong