如何使用Nvarchar(max)参数创建CLR存储过程?

时间:2010-11-18 10:28:06

标签: sql-server types sqldatatypes sqlclr

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

如果您定义存储过程:

  

< Microsoft.SqlServer.Server.SqlProcedure()> _
公共共享   Sub MyProcedure(ByVal param1 As String)

然后在部署它时,param1的类型为NVarchar(4000)。有没有办法让它成为NVarchar(最大)?

2 个答案:

答案 0 :(得分:5)

将参数定义为SqlChars类型,而不是字符串。见Handling Large Object Parameters in the CLR

答案 1 :(得分:4)

您可以使用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。