Câu hỏi phỏng vấn T-SQL
Câu hỏi

Cursor là gì và nó hoạt động như thế nào?

Câu trả lời

Cursor trong lập trình cơ sở dữ liệu, đặc biệt là trong các hệ quản trị cơ sở dữ liệu như Oracle và SQL Server, là một con trỏ được sử dụng để trỏ đến một tập hợp kết quả của một truy vấn SQL. Cursor cho phép lập trình viên truy cập từng dòng dữ liệu một cách tuần tự trong quá trình xử lý.

Cách hoạt động của Cursor thường bao gồm các bước sau:

  1. Khai báo Cursor: Đầu tiên, lập trình viên cần khai báo Cursor và liên kết nó với một câu lệnh SELECT để lấy dữ liệu cần xử lý.

    Ví dụ:

    sql Copy
    CURSOR cursor_name IS SELECT_statement;
  2. Mở Cursor (OPEN): Sau khi khai báo, Cursor cần được mở để có thể bắt đầu truy cập vào tập dữ liệu đã được định nghĩa.

    Ví dụ:

    sql Copy
    OPEN cursor_name;
  3. Đọc dữ liệu (FETCH): Sử dụng lệnh FETCH để truy cập từng dòng dữ liệu trong Cursor. Mỗi lần FETCH sẽ di chuyển con trỏ đến dòng tiếp theo trong tập dữ liệu.

    Ví dụ:

    sql Copy
    FETCH cursor_name INTO variable_list;
  4. Đóng Cursor (CLOSE): Khi đã hoàn thành việc xử lý dữ liệu, Cursor cần được đóng lại để giải phóng tài nguyên hệ thống.

    Ví dụ:

    sql Copy
    CLOSE cursor_name;
  5. Giải phóng Cursor (DEALLOCATE): Cuối cùng, Cursor cần được giải phóng khỏi bộ nhớ để tránh lãng phí tài nguyên.

    Ví dụ:

    sql Copy
    DEALLOCATE cursor_name;

Cursor thường được sử dụng trong các tình huống mà việc xử lý dữ liệu cần được thực hiện một cách tuần tự, hoặc khi các thao tác phức tạp cần được áp dụng cho từng dòng dữ liệu. Tuy nhiên, việc sử dụng Cursor cũng có nhược điểm là hiệu suất thấp hơn so với các phương pháp xử lý dữ liệu dựa trên tập (set-based processing), do đó nó chỉ nên được sử dụng khi không có giải pháp set-based phù hợp.

Citations:
https://www.tranvanbinh.vn/2021/09/tim-hieu-cursor-trong-oracle.html
https://codegym.vn/blog/cursor-trong-sql/
https://stringee.com/vi/blog/post/cursor-trong-SQL-Server
https://www.ddth.com/showthread.php/347069-cursor-là-gì-ai-có-thể-giải-thích-rỏ-giùm-em-đc-k
https://xuanthulab.net/su-dung-cursor-trong-sql-server.html
https://nuian.vn/i898-mot-vi-du-ve-cursor-trong-sql-server.aspx
https://tenten.vn/tin-tuc/cursor-css-la-gi/
https://www.youtube.com/watch?v=HNuDqHesqfs

middle

middle

Gợi ý câu hỏi phỏng vấn

senior

TRUNCATEDELETE ảnh hưởng đến Identity như thế nào?

senior

Có thể nhập dữ liệu trực tiếp từ các lệnh T-SQL mà không cần sử dụng SQL Server Integration Services không? Nếu có, những lệnh nào?

senior

Tên các loại Trigger?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào