2011-03-07 65 views
1

我有一个CLR存储过程,它将一个任意列的值作为参数。要处理所有可能的列参数,如果object/sql_variant类型:CLR sproc,接受对象参数nvarchar(max)

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

当数据传递从nvarchar(max)类型的专栏中,我得到:

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

如果参数一直是字符串我可以宣布其为SqlChar[SqlFacet(MaxSize=-1)]装饰它,使之接受长度> 4000列它是如何为对象做了什么?

回答

1

我不相信你可以实现你正在尝试的东西。 sql_variant的上边界是8k bytes。 nvarchar(最大)是上限2^31-1 bytes SQL Server正在检测你是否可能试图将德州的状态填入Dixie杯中。由于8k sql_variant的限制,不存在会说服SQL Server让你这样做的装饰器。

+0

好的,谢谢。这就说得通了。我在这种情况下做了一个解决方法,现在知道下一次我必须首先尝试其他方法。 – Grastveit 2011-03-16 22:07:44

相关问题