T-SQL(varchar(max)vs CLR(string,SqlString,SqlChars)?

Cha*_*ack 8 c# t-sql types sql-server-2005 sqlclr

我有一个问题,我无法解决.我正在使用SQL Server 2005,C#CLR来使用外部dll.问题在于参数的长度.我需要使用函数参数类型varchar(max).如果在C#代码,我使用string,SqlSring我不能使用T-SQL类型varchar(max),刚刚varchar(4000)nvarchar(4000).我需要说的是,当我需要使用超过4000个符号时,可能会出现这种情况,所以我需要知道,我需要使用哪种C#类型varchar(max).

我已经阅读了很多文章,其中有几篇说,为此,我可以使用SqlChars.但!我有字符串操作.我如何使用stringSqlString然后转换为SqlChars?(有可能SqlChars.ToString()SqlChars.ToSqlString()).

我没有找到任何C#代码.

小智 12

您需要做的是将SqlFacet(MaxSize = -1)属性添加到参数:

[return: SqlFacet(MaxSize = -1)]
[Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)]
public static SqlString YourSqlFunction([SqlFacet(MaxSize = -1)]SqlString sourceSS)
{ return new }
Run Code Online (Sandbox Code Playgroud)


Tom*_*ler 0

尝试使用长度-1。像这样的东西:

cmd.Parameters.Add("@param", SqlDbType.VarChar, -1).Value = "hdfiophdopigherog";
Run Code Online (Sandbox Code Playgroud)