Val*_*mas 4 c# t-sql clr sql-types sql-server-2012
我在程序集中创建了一个新函数,该函数已成功添加到我的SQL服务器作为CLR程序集.现在我尝试创建一个SQL用户定义的函数来映射到该程序集中的新方法.我在程序集中有其他已成功映射的方法.
这是我的功能
CREATE FUNCTION [dbo].[FromCamelCase](@value [nvarchar(MAX)])
RETURNS [nvarchar(MAX)] WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Tools_CLR].[UserDefinedFunctions].[FromCamelCase]
GO
Run Code Online (Sandbox Code Playgroud)
执行时,我收到此错误.
Msg 15151, Level 16, State 1, Procedure FromCamelCase, Line 2
Cannot find the type 'nvarchar(MAX)', because it does not exist or you do not
have permission.
Run Code Online (Sandbox Code Playgroud)
我尝试过将类型更改nvarchar为just varchar.我也尝试将大小从MAX4000改为50.
这是我的C#方法,供参考.
[Microsoft.SqlServer.Server.SqlFunction]
public static string FromCamelCase(string value)
{
if (value == null) return string.Empty;
value = value.Replace("_", "");
StringBuilder sb = new StringBuilder(value.Length + 10);
bool first = true;
char lastChar = '\0';
foreach (char ch in value)
{
if (!first && (char.IsUpper(ch) || char.IsDigit(ch) && !char.IsDigit(lastChar))) sb.Append(' ');
sb.Append(ch);
first = false;
lastChar = ch;
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
如果您出于任何原因想要保留括号,可以这样做。移动右方括号以排除(MAX)类似内容,如下所示:
RETURNS [NVARCHAR](MAX)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |