8/25/2017 Nội dung Chương Con trỏ (Cussor) GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn Tại phải dùng trỏ Khái niệm Phân loại trỏ Cách duyệt trỏ Quy trình sử dụng trỏ Nhận xét Kết hợp trỏ với store procedure Hệ quản trị Cơ sở liệu Tại phải dùng trỏ Tại phải dùng trỏ • CSDL quan hệ thường làm việc liệu có nhiều dịng mẫu tin – cịn gọi mẩu tin Ví dụ lệnh SELECT kết ln trả nhiều dịng liệu dịng liệu Tuy nhiên có số ngơn ngữ lập trình việc xử lý tính tốn liệu dịng riêng lẻ Để đáp ứng yêu cầu SQL Server tạo kiểu liệu kiểu cursor Hệ quản trị Cơ sở liệu Hệ quản trị Cơ sở liệu 8/25/2017 Khái niệm Định nghĩa cursor • Cursor cấu trúc liệu ánh xạ đến tập dòng liệu kết câu truy vấn duyệt với dịng liệu • Vị trí hang cursor dùng điều kiện where lệnh Update Delete Cú pháp định nghĩa biến có kiểu cursor DECLARE Tên_cursorCURSOR [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [STATIC | DYNAMIC | KEYSET] [READ_ONLY | SCROLL_LOCK] FOR Câu_lệnh SELECT [FOR UPDATE [OF danh_sách_cột_n]] Hệ quản trị Cơ sở liệu Định nghĩa cursor Hệ quản trị Cơ sở liệu Định nghĩa cursor Trong đó: Trong đó: Tên cursor: tên biến kiểu cursor READ_ONLY: định liệu cursor đọc nhằm hạn chế việc sửa đổi Từ khoá LOCAL | GLOBAL: dùng phạm vi hoạt động biến liệu cursor xem đọc cursor cục (local) bên thủ tục FORWARD_ONLY: đọc liệu cursor theo chiều tới SCROLL_LOCK: định hệ thống SQL Server tự động khóa dịng mẫu tin cần phải thay đổi giá trị hủy bỏ bên bảng nhằm bảo đảm duyệt từ mẫu tin đến mẫu tin cuối SCROLL: Đọc liệu cursor phép di chuyển tới lui, hành động cập nhật thành công SELECT: dùng để đến cột bên bảng mà cần đọc qua lại dòng mẫu tin bên cursor tùy thích Hệ quản trị Cơ sở liệu liệu bên cursor Khi khai báo cursor với kiểu liệu tĩnh (STATIC) liệu Hệ quản trị Cơ sở liệu 8/25/2017 Phân loại trỏ Cách duyệt trỏ • STATIC: Đọc liệu bên cursor tĩnh Khi người dùng khác có thay đổi bên liệu gốc thay đổi khơng cập nhật tự động liệu cursor Bởi liệu cursor liệu bảng tạm hệ thống chép lưu trữ CSDL tempdb hệ thống định nghĩa cursor • DYNAMIC: dùng định liệu cursor động Khi việc cập nhật liệu bảng sở người dùng khác cập nhật tự động liệu cursor có kiểu DYNAMIC • KEYSET: hoạt động giống với kiểu DYNAMIC, thay đổi liệu cột không khóa bảng sở người dùng khác cập nhật liệu cursor Tuy nhiên mẫu tin vừa thêm mẫu tin bị hủy bỏ người dùng khác không hiển thị liệu cursor có kiểu KEYSET Hệ quản trị Cơ sở liệu Cách duyệt trỏ (tt) Dùng lệnh Fetch để duyệt cursor sau: FETCH FROM [Next | Prior | First | Last | Absolute n | Relative n ] Tên_cursor [INTO danh_sách_biến] Trong đó: Next, Prior, First, Last: dùng để đọc liệu kế tiếp, trước, đầu, sau Hệ quản trị Cơ sở liệu 10 Cách duyệt trỏ (tt) Absolute: liệu xác thứ n cursor N>0 định việc đọc liệu dòng thứ n đếm từ dòng đầu tiên, n