Назад к вопросам
Middle+
6
Как работают курсоры в Oracle — явные и неявные, чем отличаются?
Компании, где спрашивали
.wrk
Ответ от нейросети
sobes.tech AI
В Oracle курсоры используются для управления результатами запросов и позволяют построчно обрабатывать данные.
Неявные курсоры создаются автоматически при выполнении SQL-запросов (например, SELECT INTO, DML-операций). Они позволяют получить информацию о выполнении запроса (количество обработанных строк и т.п.), но не дают прямого доступа к построчной обработке результата.
Явные курсоры объявляются программистом в PL/SQL и позволяют более гибко управлять выборкой данных: открывать курсор, извлекать строки по одной или пакетами, закрывать курсор. Это полезно, когда нужно обработать множество строк в цикле.
Отличия:
- Неявные курсоры автоматические, явные — объявляются вручную.
- Явные курсоры позволяют построчную обработку и управление, неявные — только для простых операций.
Пример явного курсора:
DECLARE
CURSOR c_emp IS SELECT employee_id, salary FROM employees WHERE department_id = 10;
v_emp_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO v_emp_id, v_salary;
EXIT WHEN c_emp%NOTFOUND;
-- обработка данных
DBMS_OUTPUT.PUT_LINE('Employee ' || v_emp_id || ': ' || v_salary);
END LOOP;
CLOSE c_emp;
END;