如何创建具有Nvarchar(max)参数的CLR存储过程?

6

是否可能在SQL Server CLR项目中创建具有nvarchar(max)类型输入参数的CLR存储过程?

如果您定义存储过程:

<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub MyProcedure(ByVal param1 As String)

那么当您部署它时,param1的类型为NVarchar(4000)。是否有一种方法使其成为NVarchar(max)?

2个回答

8
你可以使用 SqlFacet 属性。如果你想要将 NVARCHAR(MAX) 类型作为参数,则应该这样做:
[SqlProcedure]
public static void storedProcedure1([SqlFacet(MaxSize=-1)] String param){ .. }

如果您需要将其作为用户定义函数的返回值:

[return:SqlFacet(MaxSize=-1)]
[SqlFunction]
public static String userFunction1(){ ... }
MaxSize=-1表示 NVARCHAR 的大小将是MAX

6

嗨,达米恩。由于没有你的过错,这个答案现在已经过时且毫无意义。只是早期版本的Visual Studio / SSDT默认将SqlChars映射到NVARCHAR(MAX),并将SqlString映射到NVARCHAR(4000)。从至少VS 2012开始,我认为SqlStringSqlChars都映射到NVARCHAR(MAX)。此外,即使在那些早期,指示T-SQL数据类型选项的首选方法也是通过SqlFacet属性(如Guillermo的答案中所示)。 - Solomon Rutzky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接