@ConstKosyanov
back-end разработчик

Как избавиться от предыдущих результатов при вызове Функции среды CLR с табличным значением?

Я сделал CLR сборку для MSSQL Server 2012, написал метод преобразующий строку с разделителем в массив чисел:
[SqlFunction(FillRowMethodName = "FillRowCustomTable")]
public static IEnumerable Split(SqlChars value)
{
    return value.eStr().Split(';').Select(x => int.Parse(x));
}

public static void FillRowCustomTable(object resultObj, out SqlInt32 ID)
{
    ID = new SqlInt32((int)resultObj);
}

CREATE FUNCTION clr.Split(@Value NVARCHAR(MAX))
RETURNS TABLE(Value int) EXTERNAL NAME Regex.[SQLCLR.RegularExceptions].Split

Всё работало хорошо, но через какое-то время к результату начали добавляться предыдущие.
Например:
После пересоздания сборки выполняю запрос
SELECT * FROM clr.Split(@Val)
И получаю следующие результаты
  • @Val = "2", результат: 2
  • @Val = "1;2", результат: 1,2
  • @Val = "1;3", результат: 1,3
  • @Val = "1;3;4", результат: 1,3,4
  • @Val = "1;3", результат: 1,3,4
  • @Val = "9", результат: 9,3,4


Как от этого избавиться?
  • Вопрос задан
  • 2261 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы