BEGIN LOOP UPDATE table SET status = 'PROCESSED' WHERE category = 'OLD' AND ROWNUM <= 50000; EXIT WHEN SQL%NOTFOUND; COMMIT; END LOOP;

Этот код — пример PL/SQL цикла для пакетного обновления строк в таблице с ограничением по количеству обновляемых записей за итерацию.

Короткий ответ

Что ответить на собеседовании

Этот код — пример PL/SQL цикла для пакетного обновления строк в таблице с ограничением по количеству обновляемых записей за итерацию.

Подробный разбор

Ответ с пояснениями

Этот код — пример PL/SQL цикла для пакетного обновления строк в таблице с ограничением по количеству обновляемых записей за итерацию.

Объяснение:

  • Цикл обновляет до 50000 строк с категорией 'OLD', устанавливая статус 'PROCESSED'.
  • После каждой итерации выполняется COMMIT, чтобы зафиксировать изменения.
  • Цикл завершается, когда обновить больше нечего (SQL%NOTFOUND).

Такой подход помогает избежать блокировок и переполнения undo/redo логов при обновлении большого объема данных.

Пример улучшения — использовать BULK COLLECT и LIMIT для более эффективной обработки, либо разбивать обновления на меньшие пакеты.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку