Я не могу ручаться за производительность, но если вы используете предложение FOR XML , как это , вы определенно получите более чистый T-SQL в функции, которая у вас есть, без временнойтаблица и курсор.
Из статьи:
Вот очень простой пример t-sql, использующий FOR XML PATH () для объединения значений строк SQL в качестве примера объединения SQLв MSSQL.
SELECT
STUFF(
(
SELECT
' ' + Description
FROM dbo.Brands
FOR XML PATH('')
), 1, 1, ''
) As concatenated_string
Ваша обновленная функция может выглядеть примерно так:
CREATE FUNCTION [dbo].[ReturnVisitsTaskNos]
( @MainlinePlanID int )
RETURNS varchar(1000)
AS
BEGIN
RETURN
SELECT STUFF((
SELECT
TaskNo + ', '
FROM MainlinePlanTask
WHERE MainlinePlanID = @MainlinePlanID
FOR XML PATH('')
), 1, 0, ''
) As concatenated_string
END