【发布时间】:2018-05-24 12:44:52
【问题描述】:
我的项目中有一个 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 函数,错误就消失了。有什么问题?
【问题讨论】:
-
嗯,已经有另一个对象叫做
InsertCampaignRecipients?至少这是错误所暗示的,重命名也有助于支持这一点。 -
也许 ALTER FUNCTION .... 假设 InsertCampaignRecipients 是预先存在的功能
-
有时这是由于 VS 中的故障而发生的。您应该可以通过清除 bin 并重新启动 VS 来修复它。
标签: c# sql sql-server tsql