gpt4 book ai didi

c# - 添加新的 CLR 用户定义函数时获取 "Cannot find the type nvarchar(MAX)"

转载 作者:太空狗 更新时间:2023-10-29 23:58:59 26 4
gpt4 key购买 nike

我在程序集中创建了一个新函数,该函数已作为 CLR 程序集成功添加到我的 SQL 服务器。现在我正在尝试创建一个 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 更改为 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();
}

最佳答案

删除数据类型名称周围的括号:RETURNS NVARCHAR(MAX)。双括号意味着它被解释为称为“NVARCHAR(MAX)”(一个词)和 quoted 的用户定义数据类型。因为名称中的括号。

关于c# - 添加新的 CLR 用户定义函数时获取 "Cannot find the type nvarchar(MAX)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com