Использование табличных UDF - хороший подход, но есть еще одна проблема - в случае, если эта функция вызывается во многих местах запроса и даже внутри внутреннего выбора, может возникнуть проблема с производительностью. Вы можете решить эту проблему, используя переменную таблицы (или временную таблицу eather):
DECLARE @Param (Value INT)
INSERT INTO @Param (Value)
SELECT Param FROM dbo.fn_MVParam(@sParameterString,',')
...
where someColumn IN(SELECT Value FROM @Param)
, поэтому функция будет вызываться только один раз.
Во-вторых, если вы не используете хранимую процедуру, а встроенный SQL-запрос, вы можете просто включить MVP в запрос:
...
где someColumn IN (@Param)
...