Tin tổng hợp

Mysql 8 – Một Ví Dụ Về Cursor Trong Sql Server – viettingame

*

Nếu lý luận một cách ngắn gọn thì cursor tương tự như recordset hay dataset trong programming. Nghĩa là ta select một vài data vào memory sau đó thậm chí lần lượt thao tác với từng record bằng phương pháp Move Next…

Mang 3 loại cursors là Transact- SQL Cursors, API Cursors và Client Cursors. Trong số đó Transact-SQL và API thuộc loại Server Cursors nghĩa là cursors được load lên và thao tác bên phía server. Trong khuôn khổ bài học này ta chỉ nghiên cứu và phân tích Transact-SQL cursors.

Đang xem: Mysql 8

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

1. Sử dụng câu lệnh DECLARE CURSOR để khai báo một cursor. Lúc khai báo ta cũng phải cho thấy thêm câu lệnh SELECTsẽ được triển khai để lấy data.

2. Sử dụng câu lệnh OPEN để lấy data lên memory (populate data). Ðây đó là lúc triển khai câu lệnh SELECT vốn được khai báo ở trên.

3. Sử dụng câu lệnh FETCH để lấy từng hàng data từ record set. Ví dụ là ta phải gọi câu lệnh FETCH nhiều lần. FETCH tương tự như lệnh Move trong ADO recordset ở trong phần nó thậm chí 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 nhưng khác ở trong phần là nó lấy data bỏ vào trong variable (FETCH…FROM…INTO variable_name). Thường thì ta FETCH data trước sau đó 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 nghĩa là thành công).

Xem thêm: take into account nghĩa là gì

4. Lúc ta viếng thăm từng record ta thậm chí UPDATE hay DELETE tùy từng yêu cầu (trong thí dụ này chỉ sử dụng lệnh PRINT)

5. Sử dụng câu lệnh CLOSE để đóng cursor. Một vài tài nguyên (memory resource) sẽ được giải phóng nhưng cursor vẫn tồn tại được khai báo và thậm chí OPEN trở lại.

6. Sử dụng câu lệnh DEALLOCATE để phóng thích trọn vẹn những tài nguyên dành riêng cho cursor (kể cả tên của cursor).

Xem thêm: 10 Tựa trò chơi Offline Giống Diablo Hay Tới Nỗi Các bạn Ko Thể Giới hạn Chơi

Lưu ý là trong ví dụ ở trên trước lúc sử dụng Cursor ta cũng declare một vài variable (
au_lname) để chứa những giá trị lấy được từ cursor. Các bạn thậm chí sử dụng Query Analyzer để chạy thử ví dụ trên.

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *