уважаемый
longclaps хотел сказать что нужно сделать отдельную функцию под открытие соединения и создание курсора, вторую функцию под инсерты или использовать bulkinsert, третью под коммит, четвертую под закрытие курсора. или же посмотрите есть ли на тригеры на вставку на таблице или же запуск хранимых процедур. это тоже может тормозить процесс.
в вашей ситуации, то что Вы написали, это как прийти в магазин за каждой монетой лезть в кошелек, открывать его, доставать монету, закрывать кошелек, ложить его в карман и потом опять по новой, пока не наберете нужную сумму