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

Kon*_*dov 5 sql-server types sqlclr sqldatatypes

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

如果您定义存储过程:

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

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

Dam*_*ver 6

将参数定义为SqlChars类型,而不是字符串.请参阅CLR中的处理大对象参数


Gui*_*rez 6

您可以使用该SqlFacet属性。如果要将NVARCHAR(MAX)类型作为参数,则应执行以下操作:

[SqlProcedure]
public static void storedProcedure1([SqlFacet(MaxSize=-1)] String param){ .. }
Run Code Online (Sandbox Code Playgroud)

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

[return:SqlFacet(MaxSize=-1)]
[SqlFunction]
public static String userFunction1(){ ... }
Run Code Online (Sandbox Code Playgroud)

MaxSize=-1表明的大小NVARCHARMAX