我正在尝试通过 CRL 集成创建 SQL 函数,但出现以下错误:
“GetWSClient”的 CREATE FUNCTION 失败,因为返回值的 T-SQL 和 CLR 类型不匹配。
我正在尝试在我的 dll 中使用 WebService,然后将其集成为 SQL Server 中的程序集。
我的 C# 代码是:
namespace InternalLists
{
public class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read, Name = "WSClient", FillRowMethodName = "Fill_WSClient",
TableDefinition = "Name nvarchar(255)")]
public static DataSet WSClient(SqlString url, SqlString idClient)
{
WSInternalList.CLIENTS client = new WSInternalList.CLIENTS();
client.Url = url.ToString();
return client.WM_CLIENT(idClient.ToString());
}
public static void Fill_WSClient(object ProductObj, out SqlString Name)
{
DataRow row = (DataRow)ProductObj;
Name = new SqlString(row["VWSDN_NAME"].ToString());
}
}
}
我的 SQL 代码是:
CREATE FUNCTION [dbo].[GetWSClient](@url nvarchar(255), @idClient nvarchar(255))
RETURNS TABLE (
Name nvarchar(255) NULL
)
EXTERNAL NAME [InternalLists].[InternalLists.UserDefinedFunctions].[WSClient]
GO
我已经看到了这个答案,但是我将我的函数声明为 DataSet 返回类型,并且我知道我的 WS 正在返回一个 DataSet 结果。
那么,我做错了什么??