1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Microsoft SQL Server: Chương 7 - GV. Phạm Mạnh Cương

19 1 0

Đ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

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

Ngày đăng: 01/09/2023, 23:36