CLR sproc, объект-параметр принимает nvarchar (max) - PullRequest
1 голос
/ 07 марта 2011

У меня есть хранимая процедура CLR, которая принимает значение из произвольного столбца в качестве параметра. Для обработки всех возможных столбцов параметр if типа object / sql_variant :

[SqlFunction]  
public static bool IsTrue(object storedValue...

При передаче данных из столбца типа nvarchar(max) получаю:

"Столкновение с типом операнда: nvarchar (max) is несовместимо с sql_variant ".

Если бы параметр был строкой, я мог бы объявить его как SqlChar или украсить [SqlFacet(MaxSize=-1)], чтобы он принимал столбцы длиной> 4000. Как это делается для объектов?

1 Ответ

1 голос
/ 16 марта 2011

Я не верю, что вы можете достичь того, что вы пытаетесь. Верхняя граница sql_variant равна 8k байтов . Значение nvarchar (max) ограничено при 2 ^ 31-1 байт SQL Server обнаруживает, что вы, возможно, пытаетесь засунуть штат Техас в чашку Дикси. Из-за ограничения в 8k sql_variant не существует декоратора, который убедил бы SQL Server позволить вам это сделать.

...