Sobes.tech
Назад к вопросам
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;