我试图创建由CRL整合SQL函数,但我有以下错误:的CREATE FUNCTION <> T-SQL和CLR类型的返回值不匹配
CREATE FUNCTION for "GetWSClient" failed because T-SQL and CLR types for return value do not match.
我试图在我的dll中使用一个WebService,然后将它作为一个Assembly装入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
我见过this的答案,但我声明我的函数为数据集返回类型,而且我知道,我的WS正在返回一个DataSet结果。
那么,我在做什么错?
谢谢,那正是问题所在,我正在返回一个DataSet,所以我需要将它转换为IEnumerable。 – Elwi 2012-08-14 19:51:06