CLR sproc, параметр объекта, принимающий nvarchar (max)

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

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

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

«Конфликт типов операндов: nvarchar(max) несовместим с sql_variant».

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


person Grastveit    schedule 07.03.2011    source источник


Ответы (1)


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

person billinkc    schedule 16.03.2011
comment
Хорошо спасибо. В этом есть смысл. Я нашел обходной путь в этом случае и теперь знаю, что в следующий раз должен попробовать что-то еще. - person Grastveit; 17.03.2011