Если ваш SP может быть переписан как UDF со встроенным табличным значением, они обычно работают очень хорошо и эквивалентны параметризованному представлению. ITVF может использоваться в любом месте, где вы используете таблицу или представление.
Если ваш SP не будет работать как встроенный TVF (требуется манипулирование локальной переменной), он может работать как TVF с несколькими утверждениями (содержит BEGIN / END), который может работать или не работать плохо в зависимости от того, что вам нужно делаем.
После того, как ваш SP был превращен в UDF, вы все равно можете вызывать UDF из своего SP (SELECT * FROM udf (params)) или из другого места, где он может использоваться для объединений и т. Д., Так что весь ваш код находится внутри UDF - без дублирования.