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
実行すると、このエラーが発生します。
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.
タイプをnvarchar
から just に変更してみましたvarchar
。また、サイズMAX
を 4000 から 50 に変更してみました。
参考までに、私の C# メソッドを次に示します。
[Microsoft.SqlServer.Server.SqlFunction]
public static string FromCamelCase(string val)
{
if (val == null) return string.Empty;
val = val.Replace("_", "");
StringBuilder sb = new StringBuilder(val.Length + 10);
bool first = true;
char lastChar = '\0';
foreach (char ch in val)
{
if (!first && (char.IsUpper(ch) || char.IsDigit(ch) && !char.IsDigit(lastChar)))
sb.Append(' ');
sb.Append(ch);
first = false;
lastChar = ch;
}
return sb.ToString();
}