Trong Oracle Database, một Cursor là một cơ chế được sử dụng để thực hiện các truy vấn dữ liệu và duyệt qua kết quả của các truy vấn đó một cách tuần tự. Các Cursor cho phép bạn thực hiện các thao tác như lấy dữ liệu từ các bảng, thực hiện các phép tính, và xử lý các kết quả truy vấn một cách có hệ thống và linh hoạt.
Khi bạn thực hiện một truy vấn SQL trong Oracle, một Cursor được tạo ra ẩn danh để thực hiện truy vấn đó. Tuy nhiên, trong PL/SQL (Procedural Language/Structured Query Language), bạn có thể tạo và quản lý các Cursor một cách tường minh để thực hiện các thao tác phức tạp hơn trên dữ liệu.
Các Cursor trong Oracle thường được sử dụng trong các khối PL/SQL để lặp qua các hàng dữ liệu từ kết quả của một truy vấn hoặc thực hiện các xử lý logic phức tạp dựa trên dữ liệu từ cơ sở dữ liệu.
Dưới đây là một ví dụ cơ bản về cách sử dụng Cursor trong PL/SQL để lấy dữ liệu từ một bảng và thực hiện các xử lý:
DECLARE
CURSOR my_cursor IS
SELECT * FROM employees;
emp_record employees%ROWTYPE;
BEGIN
OPEN my_cursor;
LOOP
FETCH my_cursor INTO emp_record;
EXIT WHEN my_cursor%NOTFOUND;
— Xử lý dữ liệu
DBMS_OUTPUT.PUT_LINE(‘Employee ID: ‘ || emp_record.employee_id || ‘, Name: ‘ || emp_record.first_name || ‘ ‘ || emp_record.last_name);
END LOOP;
CLOSE my_cursor;
END;
Trong ví dụ này, Cursor my_cursor được tạo để lấy dữ liệu từ bảng employees. Sau đó, Cursor được mở, và một vòng lặp được sử dụng để lặp qua từng bản ghi của kết quả truy vấn. Mỗi hàng dữ liệu được lấy từ Cursor và gán cho biến emp_record, sau đó được in ra màn hình. Cuối cùng, Cursor được đóng sau khi vòng lặp kết thúc.