我的项目中有一个CLR功能: 我将该函数定义为.NET Framework支持的语言中的类的静态方法。然后,编译该类以构建程序集。
[SqlFunction]
public static SqlString InsertCampaignRecipients(SqlString url)
{
var rowData = string.Empty;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync(new Uri(url.Value)).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
if (result.IndexOf(@"""Exception"":null}") > 0) //success
{
rowData = "success";
}
else
{
rowData = string.Empty;
}
}
else
{
rowData = string.Empty;
}
}
return rowData;
}
然后我使用CREATE FUNCTION语句创建了引用已注册程序集的函数:
CREATE FUNCTION [dbo].[InsertCampaignRecipients] (@url NVARCHAR (4000) NULL)
RETURNS NVARCHAR (4000)
AS
EXTERNAL NAME [SmartTouch.CRM.SqlClrDb].[UserDefinedFunctions].[InsertCampaignRecipients]
我有一个错误:
SQL71508:模型已经有一个具有相同名称的元素 dbo.InsertCampaignRecipients
但如果我重命名我的SQL函数,错误就消失了。有什么问题?
答案 0 :(得分:0)
具有相同名称的对象已存在。你可以找到它是这样的:
SELECT * FROM sys.objects o WHERE o.name ='InsertCampaignRecipients'