Professional Documents
Culture Documents
Trường ðại học Sư phạm thành phố Hồ Chí Minh Mục tiêu
Khoa Công ngh
thông tin
CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ● Hiểu ñược ý nghĩa của việc sử dụng cursor
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 2
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 3 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 4
1
10/15/2010
●Sinh viên nữ, dân tộc Tày, khu vực 1 học bổng 150.000
●Sinh viên nam, dân tộc Tày, khu vực 1 học bổng 120.000
●Sinh viên thuộc khu vực 2 học bổng 100.000
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 5 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 6
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 7 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 8
2
10/15/2010
while ( i !=EOF)
● Cursor: (con trỏ) chỉ tới 1 dòng ñơn trong tập kết quả Ví dụ 1
{
của câu truy vấn mà trả về nhiều mẩu tin doc_dong_du_lieu(); // ñọc từng dòng dữ liệu
if ((phai[i]==‘Nữ’) && (dantoc[i]==‘Tay’) && (khuvuc[i]==1))
● Sử dụng cursor khi muốn làm việc trên từng dòng dữ
hocbong=150.000
liệu tại thời ñiểm hiện hành if ((phai[i]==‘Nam’) && (dantoc[i]==‘Tay’) && (khuvuc[i]==1))
hocbong=150.000
masv tensv phai dantoc khuvuc hocbong
if (khuvuc[i]==2)
Cursor SV01 Nguyễn Duy Anh Nam Kinh 3
hocbong=100.000
SV02 Lê Ngọc Bích Nữ Tày 1
i=next(i);
SV03 Trần Văn Bình Nam Kinh 3
SV04 Lê Thị Cúc Nữ Thái 2 }
SV05 Phạm Minh Cường Nam Tày 1
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 9 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 10
DDH01 Ví dụ 2
Khách hàng 01
∑ thanhtien
∑ thanhtien
Khu vực MN DDH02
∑ thanhtien ∑ thanhtien
Khách hàng 02
…
∑ thanhtien
…
Khu vực MB
∑ thanhtien
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 11 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 12
3
10/15/2010
2. Khai thác cursor ðịnh nghĩa biến kiểu cursor bằng lệnh DECLARE
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 13 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 14
2.4 ðóng cursor ● Danh sách cột cập nhật: danh sách tên các cột sẽ ñược
phép thay ñổi giá trị trong cursor
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 15 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 16
4
10/15/2010
● Ví dụ: ñịnh nghĩa một biến cursor chứa toàn bộ dòng 1. Giới thiệu cursor
dữ liệu trong bảng SINHVIEN
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 17 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 18
●Tên cursor: tên của biến kiểu cursor ñã ñịnh nghĩa bằng lệnh
DECLARE 2. Khai thác cursor
2.1 ðịnh nghĩa biến kiểu cursor
● Ví dụ: ñể mở cursor cur_SV 2.2 Mở cursor
2.3 ðọc và xử lý dữ liệu trong cursor
OPEN cur_SV
2.4 ðóng cursor
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 19 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 20
5
10/15/2010
2.3 ðọc và xử lý dữ liệu trong cursor 2.3 ðọc và xử lý dữ liệu trong cursor (tt.)
R3
R4
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 21 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 22
2.3 ðọc và xử lý dữ liệu trong cursor (tt.) 2.3 ðọc và xử lý dữ liệu trong cursor (tt.)
● @@FETCH_STATUS: dùng kiểm tra tình trạng ñọc ● Ví dụ: ñọc dữ liệu cursor trong bảng SINHVIEN
dữ liệu có thành công hay không
FETCH NEXT FROM cur_SV
– @@FETCH_STATUS=0: ñọc dữ liệu thành công
– @@FETCH_STATUS≠0: ñọc dữ liệu không thành công
WHILE @@FETCH_STATUS = 0
BEGIN
--ðọc các dòng kế tiếp
FETCH NEXT FROM cur_SV
END
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 23 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 24
6
10/15/2010
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 25 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 26
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 5: Lập trình với cursor] 27