Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
351,5 KB
Nội dung
CHƯƠNG VII STORED PROCEDURE Giảng viên: Phạm Mạnh Cươ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 II-Tạo Stored Procedure Bằng Lệnh CREATE PROCEDURE Bằng công cụ quản lý Management Studio 1- Bằng Lệnh CREATE PROCEDURE: Create Proc [] [With Recompile | Encryption | Recompile , Encryption] As [Begin] [End] 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 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 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 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 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 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 10 1- Biến cục : a) Khai báo biến cục bộ: DECLARE @VarName data_type [, n] Ví dụ: Declare @n TinyInt, @m TinyInt, @y SmallInt • Biến cục phải bắt đầu ký hiệu @ trước tên • Phạm vi biến: Biến khả dụng bên thủ tục, hàm gói lệnh khai báo biến • Giá trị ban đầu biến NULL b) Gán giá trị cho biến cục bộ: • Cách 1: SET @VarName = Ví dụ: Declare @Ngay DateTime set @Ngay ='2005/5/15' print @Ngay • Cách 2: SELECT @VarName = [FROM …] – Nếu SELECT trả nhiều dịng, biến gán giá tri từ dịng cuối trả Select 11 Ví dụ: Tạo thủ tục liệt kê danh sách mặt hàng có đơn giá cao thấp CREATE PROCEDURE spMatHangCaoNhatThapNhat AS Begin Declare @Dgmax float, @Dgmin float SELECT @Dgmax = Max(DonGia), @Dgmin = Min(DonGia) FROM MatHang SELECT * FROM MatHang WHERE DonGia = @Dgmax OR DonGia = @Dgmin ORDER BY DonGia DESC End 12 2- Phát biểu If Else: IF BEGIN Create Proc spTonKho(@Thang int, @Nam int) As If @Thang12 Begin END Print 'Thang sai' ELSE End BEGIN Else Begin Select * From TonKho END Where Thang = @Thang And Nam = @Nam End 13 3- Phát biểu WHILE : WHILE BEGIN (2N-1) Create Proc spTongLe ( @N int ) [CONTINUE] [BREAK] END Ví dụ: Thủ tục tính tổng S = + + … + AS DECLARE @I int, @S int SET @I = 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 16 Return 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 17 IV- Sửa Xóa Thủ Tục: Đổi Tên : 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 > 18 CẢM ƠN 19