Как можно более кратко:
В механизмах реляционных баз данных все операции (будь то в хранимых процедурах или нет) обычно * лучше масштабируются с использованием логики на основе множеств просто потому, что эти механизмы оптимизированы для выполнения операций на основе множеств.
Как правило, существует фиксированная стоимость ресурсов (которая может быть довольно высокой) для одной атомарной операции в двигателе, независимо от того, затрагивает ли она 1 или 1 000 000 строк.
Курсоры требуют еще больших затрат, потому что ядро базы данных должно поддерживать состояние курсора на вершине атомарной стоимости операции.
* будет несколько крайних случаев / классов проблем (которые будут зависеть от вашей СУБД), в которых процедурная логика будет работать лучше, чем на основе множеств.