1

我有一个 CLR 存储过程,它从任意列中获取一个值作为参数。要处理所有可能的列,请使用object / sql_variant类型的参数 if :

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

从类型的列中传递数据时,nvarchar(max)我得到:

“操作数类型冲突:nvarchar(max) 与 sql_variant 不兼容”。

如果参数是一个字符串,我可以将其声明为SqlChar或装饰它[SqlFacet(MaxSize=-1)]以使其接受长度> 4000 的列。它是如何处理对象的?

4

1 回答 1

1

我不相信你能实现你正在尝试的东西。sql_variant 的上限是8k 字节。nvarchar(max) 的上限2^31-1 字节 SQL Server 检测到您可能正在尝试将德克萨斯州塞进 Dixie 杯中。由于 8k sql_variant 限制,不存在可以说服 SQL Server 让您这样做的装饰器。

于 2011-03-16T19:02:55.457 回答