Я провел небольшое тестирование и экспериментирование, и когда он выполняется в UDF, он действительно обрабатывает каждую строку за раз - сервер SQL не запускает 100 процессов для каждой из 100 строк (я не думал, что это будет ).
Тем не менее, я все еще считаю, что лучше делать это как UDF, а не как курсор, потому что мои исследования показывают, что дополнительные издержки, связанные с необходимостью извлечения данных из курсора, замедляют процесс. Это может не иметь большого значения, но это может сэкономить время по сравнению с извлечением всех данных во временную таблицу.