В цикле, да. Один раз на строку, и у вас будет несколько наборов результатов (один сохраненный вывод процесса повторяется за итерацию цикла
Лучший способ - использовать APPLY и udfs, если вы можете переписать, чтобы использовать UDF
select P.prefix , T.*
from
products P
CROSS APPLY -- or OUTER APPLY maybe
dbo.SomeUDF (P.min, P.max, P.prefix) T
where
P.prefix in ('Toaster', 'Ladle', 'Pan')
udf, конечно, может быть вызван в хранимой процедуре для поддержки "API"