intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 3 - Lê Thị Minh Nguyện

Chia sẻ: Phong Phong | Ngày: | Loại File: PDF | Số trang:6

61
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 3 cung cấp cho người học các kiến thức: Khái niệm, phân loại, thủ tục với tham số đầu vào, thủ tục có dùng return, thủ tục với tham số đầu ra, bảng tạm trong thủ tục,... Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 3 - Lê Thị Minh Nguyện

8/25/2017<br /> <br /> Nội dung<br /> <br /> Chương 3.<br /> Thủ tục nội tại (Store procedure)<br /> GV: Lê Thị Minh Nguyện<br /> Email: nguyenltm@huflit.edu.vn<br /> <br /> 1.<br /> 2.<br /> 3.<br /> 4.<br /> 5.<br /> 6.<br /> <br /> Khái niệm<br /> Phân loại<br /> Thủ tục với tham số đầu vào<br /> Thủ tục có dùng return<br /> Thủ tục với tham số đầu ra<br /> Bảng tạm trong thủ tục<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 1. Khái niệm<br /> <br /> 2. Phân loại<br /> <br /> • Store procedure (thủ tục): là một tập hợp chứa các dòng lệnh, các biến và<br /> <br /> • Thủ tục hệ thống<br /> <br /> các cấu trúc điều khiển trong ngôn ngữ Transaction-SQL dùng để thực<br /> hiện một hành động nào đó.<br /> <br /> 2<br /> <br /> • Bắt đầu bằng chữ sp_ và hầu hết tất cả các thủ tục hệ thống<br /> được lưu trữ bên trong CSDL Master.<br /> <br /> • Lợi ích của thủ tục<br /> <br /> • Thủ tục do người dùng xây dựng<br /> <br /> • Tối ưu hóa việc phân tích, biên dịch và thực thi câu lệnh.<br /> • Thực hiện một yêu cầu bằng một câu lệnh đơn giản hơn thay vì phải sử dụng<br /> nhiều dòng lệnh SQL khi thực thi  làm giảm thiểu sự lưu thông trên mạng<br /> • Tăng khả năng bảo mật khi cấp phát quyền thông qua thủ tục<br /> • Tốc độ xử lý của các thủ tục nội tại rất nhanh.<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 3<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 4<br /> <br /> 1<br /> <br /> 8/25/2017<br /> <br /> Tạo thủ tục<br /> <br /> Tạo thủ tục<br /> • Gọi thực hiện thủ tục:<br /> Cú pháp:<br /> EXEC[UTE]<br /> Tên_thủ_tục<br /> Ví dụ:<br /> EXEC sp_MaxSLHang<br /> • Thay đổi nội dung thủ tục<br /> Cú pháp:<br /> ALTER PROC[EDURE] Tên_thủ_tục<br /> AS<br /> [Declare biến_cục_bộ]<br /> Các_lệnh.<br /> <br /> • Tạo mới thủ tục<br /> • Cú pháp:<br /> CREATE PROC[EDURE]<br /> Tên_thủ_tục<br /> AS<br /> [Declare biến_cục_bộ]<br /> các_lệnh<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 5<br /> <br /> 3. Thủ tục với tham số đầu vào<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 6<br /> <br /> 3. Thủ tục với tham số đầu vào (tt)<br /> • Tạo thủ tục tên danhsach có tham số truyền vào là tên nhân viên.<br /> <br /> • Cú pháp:<br /> <br /> Liệt kê mã nhân viên, họ lót, tên nhân viên, ngày vào làm, lương:<br /> CREATE PROC sp_danhsach @ten nvarchar(20)<br /> <br /> CREATE PROC[EDURE]<br /> Tên_thủ_tục<br /> @Tên_tham_số kiểu_dữ_liệu [= giá_trị]<br /> AS<br /> [Declare biến_cục_bộ]<br /> các_lệnh<br /> <br /> AS<br /> SELECT<br /> <br /> MaNV, HoLot, TenNV, NgayVaoLam, Luong<br /> <br /> FROM<br /> <br /> NhanVien<br /> <br /> WHERE<br /> <br /> TenNV= @ten<br /> <br /> • Thực thi:<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 7<br /> <br /> sp_danhsach ‘Linh’<br /> hoặc exec sp_danhsach ‘Linh’<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 8<br /> <br /> 2<br /> <br /> 8/25/2017<br /> <br /> 3. Thủ tục với tham số đầu vào (tt)<br /> <br /> 3. Thủ tục với tham số đầu vào (tt)<br /> <br /> • Sửa<br /> ALTER PROC sp_danhsach @ten nvarchar(20)<br /> AS<br /> <br /> IF EXISTS(SELECT * FROM NhanVien WHERE TenNV = @ten)<br /> SELECT<br /> <br /> MaNV, HoLot, TenNV, NgayVaoLam, Luong<br /> <br /> FROM<br /> WHERE<br /> <br /> NhanVien<br /> TenNV= @ten<br /> <br /> ELSE<br /> print ‘không tồn tại nhân viên tên ’ + @ten<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 9<br /> <br /> 3. Thủ tục với tham số đầu vào (tt)<br /> <br /> • Tạo thủ tục tăng lương nhân CREATE PROC asc_salary(@idemp int)<br /> viên với tham số đầu vào là mức AS<br /> BEGIN<br /> mã nhân viên. Nếu lương nhân<br /> DECLARE @salary INT<br /> viên lớn hơn 1000$ thì tăng<br /> SELECT @salary=Luong<br /> 150$, ngược lại tăng 100$<br /> FROM NhanVien<br /> <br /> WHERE MaNV=@idemp<br /> If @salary>1000<br /> UPDATE NhanVien<br /> SET Luong=Luong+150<br /> WHERE MaNV=@idemp<br /> Else<br /> UPDATE NhanVien<br /> SET Luong=Luong+100<br /> WHERE MaNV=@idemp<br /> END<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 10<br /> <br /> 4. Thủ tục có dùng return<br /> <br /> • Tạo thủ tục tăng lương CREATE PROCEDURE asc_salary(@idemp int)<br /> nhân viên lên 5 lần, mỗi lần AS<br /> BEGIN<br /> tăng 50$<br /> <br /> • Các thủ tục có thể trả về giá trị số nguyên để thông báo thủ<br /> tục thực hiện thành công hay thất bại. SQL Server định<br /> nghĩa sẳn tập các giá trị trả về nằm trong khoảng [-99;0].<br /> Giá trị 0 cho biết thủ tục thực hiện thành công, các giá trị<br /> còn lại cho biết nguyên nhân lỗi xảy ra<br /> <br /> DECLARE @count int<br /> SET @count=1<br /> WHILE @count
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2