是否可以在SQL Server CLR项目中创建具有nvarchar(max)类型的输入参数的CLR存储过程?
如果您定义存储过程:
< Microsoft.SqlServer.Server.SqlProcedure()> _
公共共享 Sub MyProcedure(ByVal param1 As String)
然后在部署它时,param1的类型为NVarchar(4000)。有没有办法让它成为NVarchar(最大)?
答案 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。