Использование оператора Pure SQL всегда лучший выбор по сравнению с курсором. Курсоры используются, когда обработка данных с использованием чистого SOL затруднительна.
Используя курсор, мы обрабатываем по одной строке. При массовом сборе мы уменьшаем переключение контекста, но мы по-прежнему обрабатываем только несколько тысяч строк в цикле, используя предложение Limit. Используя чистый SQL, можно вставлять или обновлять больше строк, если доступно достаточно ресурсов. Откат сегмента является ограничивающим фактором. В одном проекте я написал очень сложный чистый SQL для вставки миллионов строк в очень большую среду хранилища данных с ошибкой. Администратор баз данных сделал доступным очень большой сегмент отката. Я не смог добиться такого рода производительности с помощью массовой коллекции.
Пожалуйста, будьте осторожны, большинство компаний не предоставят вам такую услугу. Поэтому, пожалуйста, примите решение на основе доступных ресурсов. Вы можете использовать комбинацию обоих.