03 BTVN3 Stored procedure nang cao TH QTCSDL 1617 VTMHANG Quản trị Cơ sở dữ liệu – HKI/2016 2017 – 14CK – Biên soạn ThS Vũ Thị Mỹ Hằng BÀI TẬP VỀ NHÀ 3 – STORED PROCEDURE NÂNG CAO VIẾT CÁC STORED PROC[.]
Trang 1BÀI TẬP VỀ NHÀ 3 – STORED PROCEDURE NÂNG CAO
VIẾT CÁC STORED PROCEDURE SAU VÀ GỌI LỆNH THỰC THI:
(Sử dụng CSDL QLHV)
1 Nhập vào mã một học viên, đếm số môn mà học viên này đã thi đậu Điều kiện thi đậu: điểm lần thi sau cùng của môn này >= 5
Xuất kết quả bằng tham số output
2 Xuất ra danh sách họ tên các giáo viên, ứng với mỗi giáo viên cho biết số môn mà các giáo viên này đã được phân công giảng dạy
Xuất kết quả bằng lệnh select
3 Nhận vào mã một học viên, cho biết điểm trung bình của học viên đó Điểm trung bình được tính trên điểm thi lần thi sau cùng của học viên theo công thức:
Điểm trung bình = ∑(Điểm * Số tín chỉ) / ∑Số tín chỉ Xuất ra kết quả bằng tham số output Lưu ý: ĐTB làm tròn 2 chữ số
4 Nhận vào mã một học viên, cho biết xếp loại của học viên đó Xếp loại của một học viên được đánh giá dựa vào điểm trung bình theo quy tắc bên dưới:
§ ĐTB < 5 à loại “Yếu”
§ ĐTB = 5 à loại “Trung bình”
§ 5 < ĐTB < 6.5 à loại “Trung bình khá”
§ 6.5 <= ĐTB < 8 à loại “Khá”
§ 8 < ĐTB < 9 à loại “Giỏi”
§ ĐTB >= 9 à loại “Xuất sắc”
Xuất kết quả bằng tham số output Lưu ý: sử dụng lại stored procedure ở câu 3
5 Nhận vào một mã lớp, cho biết họ tên học viên có điểm trung bình cao nhất của lớp đó Điều kiện và công thức tính điểm trung bình tương tự câu 3
Xuất kết quả bằng lệnh select
6 Viết stored procedure nhận vào thông tin một học viên mới và đưa học viên vào CSDL theo quy trình sau:
§ B1: Kiểm tra nếu mã học viên đã có à thông báo lỗi mã học viên đã tồn tại & kết thúc
§ B2: Kiểm tra nếu học viên được xếp vào lớp chưa tồn tại à thông báo lỗi lớp học không hợp lệ & kết thúc
Trang 2§ B3: Kiểm tra nếu học viên được xếp vào lớp có nhiều hơn 20 học viên à thông báo lớp đã quá đông và không thể nhận thêm học viên & kết thúc
§ B4: Kiểm tra nếu tình trạng không phải là một trong ba tình trạng ‘đang học’, ‘đã tốt nghiệp’ hoặc ‘bị thôi học’ à thông báo lỗi tình trạng không hợp lệ & kết thúc
§ B5: Nếu các điều kiện đã thoả mãn, thêm học viên vào
§ B6: Cập nhật lại sĩ số trong bảng lớp học tương ứng
§ B7: Thông báo thêm học viên thành công
7 Viết stored procedure nhận vào một mã học viên và tiến hành xoá học viên này theo quy trình sau:
§ B1: Kiểm tra nếu mã học viên không có à thông báo lỗi mã học viên không tồn tại
& kết thúc
§ B2: Kiểm tra nếu tình trạng học viên là “đang học” à thông báo lỗi không được xoá học viên đang học & kết thúc
§ B3: Nếu các điều kiện đã thoả mãn, xoá học viên
§ B4: Cập nhật lại sĩ số trong bảng lớp học tương ứng
§ B5: Thông báo xoá học viên thành công
8 Viết stored procedure nhận vào một mã học viên và một mã lớp, tiến hành chuyển học viên sang lớp này theo quy trình sau:
§ B1: Kiểm tra nếu mã học viên không có à thông báo lỗi mã học viên không tồn tại
& kết thúc
§ B2: Kiểm tra nếu không tồn tại mã lớp sẽ chuyển học viên sang à thông báo lớp không hợp lệ & kết thúc
§ B2: Cập nhật mã lớp mới cho học viên
§ B3: Cập nhật lại sĩ số trong bảng lớp học mà học viên mới chuyển sang (tăng 1)
§ B4: Cập nhật lại sĩ số trong bảng lớp học mà học viên vừa chuyển đi (giảm 1) Lưu ý: nếu sĩ số lớp cũ sau khi học viên chuyển đi là 0 thì tiến hành huỷ lớp này
§ B5: Thông báo chuyển lớp thành công
9 Viết stored procedure nhận vào tên môn học và số tín chỉ của một môn học mới và thêm môn học này vào CSDL theo quy trình sau:
§ B1: Phát sinh mã cho môn học mới theo quy tắc đánh mã MHXXXXX, trong đó:
Trang 3o XXXXX là chuỗi số gồm 5 ký tự cho biết số thứ tự của môn Nếu chuỗi số thứ tự chưa đủ 5 ký tự thì thêm các số 0 vào trước Ví dụ: môn học thứ 14 được đánh mã là MH00014, môn học thứ 7 được đánh mã là MH00007
o Khi thêm một môn học mới vào, sẽ lấy số thứ tự liền kề của môn vừa được thêm trước đó Tuy nhiên, trong trường hợp có số thứ tự khuyết, thì sẽ lấy
số thứ tự khuyết nhỏ nhất Ví dụ:
ü Nếu trong CSDL có sẵn các môn đánh mã MH00001, MH00002 thì môn mới thêm sẽ có mã MH00003
ü Nếu trong CSDL có sẵn các môn đánh mã MH00001, MH00003, MH00005 thì môn mới thêm sẽ có mã MH00002
§ B2: Kiểm tra nếu tên môn học đã tồn tại thì xử lý theo quy tắc bên dưới:
o Nếu tận cùng của tên môn nhận vào là chữ thì đổi tên môn thành: tenMon + 2 Ví dụ: môn “Cơ sở dữ liệu” dự định thêm bị trùng tên thì đổi thành
“Cơ sở dữ liệu 2”
o Nếu tận cùng của tên môn nhận vào là số thì tăng giá trị số thêm 1 Ví dụ: môn “Cơ sở dữ liệu 4” dự định thêm bị trùng tên thì đổi thành “Cơ sở dữ liệu 5”
§ B3: Kiểm tra số tín chỉ phải nằm trong khoảng từ 2 đến 5
o Nếu số tín chỉ nhận vào < 2 thì gán số tín chỉ mặc định là 2
o Nếu số tín chỉ nhận vào > 5 thì gán số tín chỉ mặc định là 5