HỆ QUẢN TRỊ CSDL SQL SERVER chương 7 STORED PROCEDURE

28 608 0
HỆ QUẢN TRỊ CSDL SQL SERVER   chương 7  STORED PROCEDURE

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỆ QUẢN TRỊ CSDL SQL SERVER Chương 7: STORED PROCEDURE Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc Hồng I- Khái niệm : • Là chương trình xây dựng phát biểu T-SQL • Có tham số Input Output • Được lưu trữ CSDL với tên phân biệt • Cho phép gọi thực từ ngôn ngữ lập trình khác • Stored Procedure thường dùng thực truy vấn hay cập nhật liệu theo yêu cầu người dùng SQL Server II-Tạo Stored Procedure Bằng Lệnh CREATE PROCEDURE Bằng công cụ quản lý Management Studio SQL Server 1- Bằng Lệnh CREATE PROCEDURE: Create Proc [] [With Recompile | Encryption | Recompile , Encryption] As [Begin] [End] SQL Server Ví dụ: Tạo thủ tục liệt kê sản phẩm tồn kho tháng Create Proc spTonKho(@Thang int = 8, @Nam int = 2005) As Begin Select * From TonKho Where Thang = @Thang And Nam = @Nam End SQL Server Ví dụ: Tạo thủ tục trả Doanh thu năm Create Proc spDTNam (@Nam Smallint, @DoanhThu Float Output) AS Begin Select @DoanhThu=Sum(SL*DGBan) From HoaDon hd Inner Join CTHD ct On hd.SoHD=ct.SoHD Where Year(NgayHD) = @Nam End SQL Server 1.1 Khai báo tham số hình thức thủ tục: Cú pháp: @par_name datatype [= default][OUTPUT] [,…n] Có loại tham số hình thức: Input Output • Tham số Output dùng liên kết với biến nơi gọi, nhận giá trị biến trả giá trị cho biến Ví dụ: Create Proc spTonKho(@Thang int = 8, @Nam int = 2005) Create Proc spDTNam(@Nam int, @DoanhThu Float Output) • Tham số hình thức nhận giá trị mặc định không truyền giá trị cho SQL Server 1.2 Thực Stored Procedures có Tham số • Cách Truyền theo vị trí : EXEC sp_name [OUTPUT] [,…n] Ví dụ gọi thủ tục: Create Proc spTonKho(@Thang int = 8, @Nam int = 2005) Exec spTonKho 9, 2005 Sử dụng giá trị default : • Exec spTonKho Cách Truyển theo tên: EXEC sp_name @par_name = [OUTPUT][,…n] Ví dụ gọi thủ tục: Create Proc spTonKho(@Thang int = 8, @Nam int = 2005) Exec spTonKho @Nam = 2005, @Thang = Sử dụng giá trị default: Exec spTonKho @Nam = 2006 SQL Server 1.3 Nhận giá trị từ tham số Output • Phải dùng Biến với từ khóa Output lời gọi để nhận giá trị từ tham số hình thức loại Output Create Proc spDTNam(@Nam int, @DoanhThu Float Output) Ví dụ: Thực thủ tục spDTNam Declare @DT Float Exec spDTNam 2005, @DT Output Print @DT Hay Declare @DT Float Exec spDTNam @DoanhThu = @DT Output, @Nam = 2005 Print @DT SQL Server III- Các Phát Biểu Điều Khiển: Biến cục Phát biểu If Else Phát biểu WHILE Phát biểu: RETURN [Biểu thức số nguyên] Phát biểu: GOTO Phát biểu : Exec(@string_var | [N]'string_expression') 10 SQL Server Ví dụ: Tạo thủ tục truy vấn tồn kho theo tháng năm Create Proc spTonKho (@TN Varchar(7)) Set @m = Left(@TN, @i-1 ) Set @y = Right(@TN, Len(@TN)- @i) As If (@m 12) Declare @i TinyInt, @m TinyInt Begin Declare @y SmallInt Print 'Thang Sai' Set @TN = Ltrim(RTrim(@TN)) Return Set @i = CharIndex('/', @TN) End If (@i = 0) SELECT * FROM TonKho Begin WHERE Thang = @m Print 'Khong co dau / ' And Nam = @y Return Return End 14 SQL Server 3- Phát biểu WHILE : WHILE Ví dụ: Thủ tục tính tổng S = + + … + (2N-1) BEGIN Create Proc spTongLe ( @N int ) AS [CONTINUE] DECLARE @I int, @S int [BREAK] SET @I = END SET @S = WHILE @I GetDate() Begin Print 'Ngay lap hoa don lon hon hien hanh ' Return End Insert HoaDon (SoHD, MaNV, NgayHD) Values(@SoHD, @MaNV, @NgayHD) if @@Error Begin Print 'Loi them hoa don moi' Return End Return 17 SQL Server 5- Phát biểu: GOTO Create Proc spTongLe ( @N int ) Thuc hien thu tuc AS Declare @KQ int DECLARE @I int, @S int Exec @KQ = spTongLe SET @I = Print @kq SET @S = Lap: IF (@I > 2*@N -1) GoTo KetQua Set @S = @S + @I Set @I = @I + GoTo Lap KetQua: Return @S 18 SQL Server 6-Phát biểu : Exec(@string_var | [N]'string_expression') Dùng thực phát biểu T-SQL lưu biến chuỗi tạo biểu thức chuỗi Ví dụ: Tạo thủ tục truy vấn Table, với tên table tham số Input Create Proc spMoBang (@TenBang VarChar(30)) Ví dụ: Tạo thủ tục liệt kê N mặt hàng có đơn giá thấp hay cao nhất; chọn thêm hay không chọn thêm mặt hàng khác có đơn giá với mặt hàng thứ N Có tham số Input: số nguyên dương N, cờ hiệu hay cho biết chọn đơn giá thấp hay cao nhất; chọn thêm hay không chọn thêm 19 SQL Server IV- Giao Tác (Transaction) • Transaction gói lệnh dùng đảm bảo lệnh cập nhật liệu gói xử lý cách trọn vẹn • Nếu có lệnh Transaction bị lỗi tự động bãi bỏ lệnh Transaction phục hồi lại toàn liệu bị thay đổi lệnh Transaction 20 SQL Server 1- Các phát biểu đóng gói Transaction a) Bắt đầu Transaction: BEGIN TRAN[SACTION] [transaction_name] • Nên đặt tên giao tác giao tác có lồng giao tác khác b) Kết thúc Transaction: • Không phục hồi liệu thay đổi: COMMIT TRAN [transaction_name] • Phục hồi liệu thay đổi Transaction: ROLLBACK TRAN [transaction_name] 21 SQL Server Ví dụ: Xây dựng thủ tục dùng: • Thêm chi tiết hóa đơn gồm số hóa đơn, mã hàng, số lượng, đơn giá bán vào table CTHD • Nếu lệnh chèn bị lỗi kết thúc giao tác, trả giá trị • Ngược lại giảm số tồn mặt hàng ghi chi tiết hóa đơn • Nếu sau giảm mà số tồn < bãi bỏ lệnh chèn chi tiết hóa đơn phục hồi lại số tồn thay đổi 22 SQL Server 2- Phân đoạn nhóm lệnh Transaction: Được sử dụng muốn phân chia nhóm lệnh cần bãi bỏ Transaction • Đánh dấu đầu phân đoạn: SAVE TRAN • Kết thúc Transaction phục hồi liệu thay đổi nhóm lệnh: ROLLBACK TRAN 23 SQL Server Ví dụ: Xây dựng thủ tục dùng: • Thêm hóa đơn gồm số hóa đơn, ngày lập, mã số nhân viên lập hóa đơn chi tiết hóa đơn gồm mã hàng, số lượng, đơn giá bán • Nếu lệnh thêm hóa đơn bị lỗi kết thúc giao tác trả giá trị • Ngược lại thêm chi tiết hóa đơn vào table CTHD đồng thời giảm số tồn mặt hàng • Nếu lệnh thêm chi tiết hóa đơn bị lỗi kết thúc giao tác bỏ lệnh chèn chi tiết hóa đơn trả giá trị lỗi • Nếu sau giảm mà số tồn < bỏ lệnh chèn chi tiết hóa đơn phục hồi lại số tồn thay đổi 24 SQL Server V- Kiểm soát lỗi thực hiện: • Cú pháp: BEGIN TRY END TRY BEGIN CATCH END CATCH • Khi có lỗi thực lệnh khối TRY chương trình chuyển sang thực lệnh khối CATCH • Sử dụng hàm Error… để xuất thông báo lỗi: – Error_Number(): Mã lỗi – Error_Message(): câu thông báo lỗi 25 SQL Server Ví dụ sử dung Try Catch Xây dựng thủ tục dùng thêm hóa đơn gồm số hóa đơn, ngày lập, mã số nhân viên lập hóa đơn chi tiết hóa đơn gồm mã hàng, số lượng, đơn giá bán Nếu lệnh chèn bị lỗi hủy bỏ 2, trả mã lỗi thông báo lỗi 26 SQL Server VI- Sửa Xóa Thủ Tục: Đổi Tên TTLT: sp_Rename , Xóa Thủ tục lưu: DROP PROC Thay đổi nội dung thủ tục lưu trữ: ALTER PROC spName [Danh sách tham số] [With Recompile | Encryption | Recompile, Encryption] AS < Các phát biểu t_sql > 27 SQL Server VII- XEM THÔNG TIN THỦ TỤC: Table Sys.Procedures: chứa thủ tục CSDL hành Select * From Sys.Procedures Table Sys Parameters: chứa tham số thủ tục Select * From Sys.Parameters Where Object_ID=Object_ID('spTonKho‘) Xem nội dung thủ tục: SP_HELPTEXT ‘spName’ Ví dụ: IF EXISTS (SELECT * FROM Sys.Procudures WHERE Name = 'spTonKho' ) DROP PROC spTonKho 28 SQL Server [...]... t _sql > 27 SQL Server VII- XEM THÔNG TIN THỦ TỤC: 1 Table Sys.Procedures: chứa các thủ tục trong CSDL hiện hành Select * From Sys.Procedures 2 Table Sys Parameters: chứa các tham số của thủ tục Select * From Sys.Parameters Where Object_ID=Object_ID('spTonKho‘) 3 Xem nội dung thủ tục: SP_HELPTEXT ‘spName’ Ví dụ: IF EXISTS (SELECT * FROM Sys.Procudures WHERE Name = 'spTonKho' ) DROP PROC spTonKho 28 SQL. .. Return 0 17 SQL Server 5- Phát biểu: GOTO Create Proc spTongLe ( @N int ) Thuc hien thu tuc AS Declare @KQ int DECLARE @I int, @S int Exec @KQ = spTongLe 9 SET @I = 1 Print @kq SET @S = 0 Lap: IF (@I > 2*@N -1) GoTo KetQua Set @S = @S + @I Set @I = @I + 2 GoTo Lap KetQua: Return @S 18 SQL Server 6-Phát biểu : Exec(@string_var | [N]'string_expression') Dùng thực hiện phát biểu T -SQL lưu trong... [transaction_name] 21 SQL Server Ví dụ: Xây dựng thủ tục dùng: • Thêm một chi tiết hóa đơn gồm số hóa đơn, mã hàng, số lượng, đơn giá bán vào table CTHD • Nếu lệnh chèn bị lỗi thì kết thúc giao tác, trả về giá trị 1 • Ngược lại thì giảm số tồn của mặt hàng đã ghi trong chi tiết hóa đơn đó • Nếu sau khi giảm mà số tồn < 0 thì bãi bỏ lệnh chèn chi tiết hóa đơn và phục hồi lại số tồn đã thay đổi 22 SQL Server 2-... chọn thêm hay không chọn thêm 19 SQL Server IV- Giao Tác (Transaction) • Transaction là một gói lệnh dùng đảm bảo các lệnh cập nhật dữ liệu trong gói đều được xử lý một cách trọn vẹn • Nếu có một lệnh nào đó trong Transaction bị lỗi thì sẽ tự động bãi bỏ các lệnh trong Transaction và phục hồi lại toàn bộ dữ liệu đã bị thay đổi bởi các lệnh trong Transaction 20 SQL Server 1- Các phát biểu đóng gói một... 'Khong co dau / ' And Nam = @y Return 1 Return 0 End 14 SQL Server 3- Phát biểu WHILE : WHILE Ví dụ: Thủ tục tính tổng S = 1 + 3 + … + (2N-1) BEGIN Create Proc spTongLe ( @N int ) AS [CONTINUE] DECLARE @I int, @S int [BREAK] SET @I = 1 END SET @S = 0 WHILE @I ... liệu theo yêu cầu người dùng SQL Server II-Tạo Stored Procedure Bằng Lệnh CREATE PROCEDURE Bằng công cụ quản lý Management Studio SQL Server 1- Bằng Lệnh CREATE PROCEDURE: Create Proc ... Recompile, Encryption] AS < Các phát biểu t _sql > 27 SQL Server VII- XEM THÔNG TIN THỦ TỤC: Table Sys.Procedures: chứa thủ tục CSDL hành Select * From Sys.Procedures Table Sys Parameters: chứa tham... @DoanhThu Float Output) • Tham số hình thức nhận giá trị mặc định không truyền giá trị cho SQL Server 1.2 Thực Stored Procedures có Tham số • Cách Truyền theo vị trí : EXEC sp_name [OUTPUT]

Ngày đăng: 03/12/2015, 15:38

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan