Я бы не использовал функции, если нет другого способа получить ваши данные.
Начиная с SQL2005, у вас есть дополнительные функциональные возможности в хранимых процедурах, таких как предложения WITH и CROSS APPLY, которые упрощают определенные ограничения, которые были у нас в предыдущих версиях SQL, которые могли быть решены с помощью UDF.
С точки зрения производительности хранимая процедура, как правило, будет быстрее, но это зависит от того, насколько оптимизирован ваш запрос и / или как были разработаны таблицы, возможно, вы могли бы дать нам пример того, чего вы пытаетесь достичь.