【问题标题】:CLR sproc, object-parameter accepting nvarchar(max)CLR sproc,接受 nvarchar(max) 的对象参数
【发布时间】:2011-03-17 03:02:55
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: tsql sqlclr clrstoredprocedure


    【解决方案1】:

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

    【讨论】:

    • 好的,谢谢。那讲得通。在这种情况下,我做了一个解决方法,现在知道下次我必须首先尝试其他方法。
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 2010-09-26
    • 2017-11-24
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多