CURSOR LÀ GÌ

*
Nếu giải thích một giải pháp nthêm gọn gàng thì cursor tương tự như recordmix tốt dataset trong programming. Nghĩa là ta select một trong những data vào memory tiếp nối hoàn toàn có thể theo lần lượt làm việc với từng record bằng cách Move Next...

Có 3 loại cursors là Transact- Squốc lộ Cursors, API Cursors cùng Client Cursors. Trong đó Transact-SQL và API thuộc loại Server Cursors tức là cursors được load lên và thao tác làm việc bên phía server. Trong kích cỡ bài học kinh nghiệm này ta chỉ nghiên cứu và phân tích Transact-SQL cursors.

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

Transact-Squốc lộ cursors được tạo thành trên server bởi các câu lệnh Transact-Squốc lộ và hầu hết được sử dụng vào stored procedures với triggers. Trước không còn 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ụ sống bên trên ta sẽ select LastName với FirstName từ bỏ Employees table của Northwind database và load vào Employee_Cursor tiếp đến theo lần lượt in tên của những employee ra screen. Ðể thao tác làm việc với 1 cursor ta nên theo các bước sau:

1. Dùng câu lệnh DECLARE CURSOR nhằm knhị báo một cursor. Lúc knhì báo ta cũng đề nghị cho biết thêm câu lệnh SELECTsẽ được tiến hành để lấy data.

2. Dùng câu lệnh OPEN để mang data lên memory (populate data). Ðây chính là thời gian thực hiện câu lệnh SELECT vốn được khai báo làm việc bên trên.

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

Xem thêm: Tốt Nhất Makeup Kit Factory Tiên Beauty Game Trang Điểm, Game Trang Điểm

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

5. Dùng câu lệnh CLOSE để đóng góp cursor. Một số tài ngulặng (memory resource) sẽ tiến hành giải pngóng tuy vậy cursor vẫn tồn tại được khai báo với có thể OPEN quay trở về.

6. Dùng câu lệnh DEALLOCATE để phóng ưa thích trọn vẹn các tài nguim dành cho cursor (bao gồm cả thương hiệu của cursor).

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