Я сделал 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
Как от этого избавиться?