Cursor là gì

*
Nếu lý giải một giải pháp ngắn gọn gàng thì cursor tương tự nhỏng recordphối xuất xắc dataset trong programming. Nghĩa là ta select một số data vào memory kế tiếp hoàn toàn có thể theo lần lượt thao tác làm việc cùng với từng record bằng phương pháp Move Next...

Có 3 nhiều loại cursors là Transact- SQL Cursors, API Cursors cùng Client Cursors. Trong số đó Transact-SQL với API ở trong nhiều loại Server Cursors tức thị cursors được load lên với thao tác làm việc mặt phía server. Trong khuôn khổ bài học này ta chỉ nghiên cứu Transact-SQL cursors.

Bạn đang xem: Cursor là gì

Transact-Squốc lộ cursors được tạo nên bên trên server bằng các câu lệnh Transact-Squốc lộ cùng đa phần được dùng trong stored procedures cùng triggers. Trước hết hãy xem sang 1 ví dụ về cursor:

DECLARE
au_fname varchar(20)  DECLARE Employee_Cursor CURSOR FOR SELECT LastName, FirstName FROM Northwind.dbo.Employees   OPEN Employee_Cursor   FETCH NEXT FROM Employee_Cursor INTO
au_fname END CLOSE Employee_Cursor DEALLOCATE Employee_Cursor Trong ví dụ sinh hoạt trên ta sẽ select LastName và FirstName từ Employees table của Northwind database cùng load vào Employee_Cursor kế tiếp theo lần lượt in tên của các employee ra màn hình. Ðể làm việc với cùng 1 cursor ta bắt buộc theo quá trình sau:

1. Dùng câu lệnh DECLARE CURSOR nhằm khai báo một cursor. khi khai báo ta cũng đề nghị cho thấy câu lệnh SELECTsẽ tiến hành tiến hành để mang data.

2. Dùng câu lệnh OPEN để đưa data lên memory (populate data). Ðây chính là dịp tiến hành câu lệnh SELECT vốn được knhị báo nghỉ ngơi trên.

3. Dùng câu lệnh FETCH để mang từng sản phẩm data trường đoản cú record mix. Cụ thể là ta cần call câu lệnh FETCH nhiều lần. FETCH tương tự nlỗi lệnh Move sầu vào ADO recordphối tại vị trí nó có thể di chuyển tới lui bằng câu lệnh FETCH FIRST, FETCH NEXT, FETCH PRIOR, FETCH LAST, FETCH ABSOLUTE n, FETCH RELATIVE n nhưng mà không giống ở vị trí là nó đem data bỏ vô trong variable (FETCH...FROM...INTO variable_name). Đôi khi ta FETCH data trước kế tiếp loop cho tới record cuối của Cursor bằng vòng lặp WHILE bằng phương pháp kiểm tra global variable
FETCH_STATUS (=0 tức là thành công).

Xem thêm: D-Day Là Ngày Gì - Hoa Kỳ Và Châu Âu Kỷ Niệm 75 Năm Cuộc Đổ Bộ Sang

4. Lúc ta viếng thăm từng record ta có thể UPDATE giỏi DELETE tùy theo yêu cầu (vào thí dụ này chỉ sử dụng lệnh PRINT)

5. Dùng câu lệnh CLOSE để đóng góp cursor. Một số tài nguim (memory resource) sẽ tiến hành giải pđợi mà lại cursor vẫn còn đó được knhị báo cùng có thể OPEN trở lại.

6. Dùng câu lệnh DEALLOCATE nhằm pchờ thích hợp hoàn toàn những tài nguyên giành riêng cho cursor (kể cả tên của cursor).

Xem thêm: Sinh Năm 1975 Hợp Màu Gì? Tuổi Ất Mão Hợp Với Màu Gì Tuổi Ất Mão Hợp Với Màu Gì

Lưu ý là trong ví dụ ở bên trên trước khi sử dụng Cursor ta cũng declare một số trong những variable (
au_lname) để chứa những quý hiếm lấy được từ bỏ cursor. Bạn rất có thể dùng Query Analyzer để chạy test ví dụ bên trên.


Chuyên mục: Blockchain