CRL統合によってSQL関数を作成しようとしていますが、次のエラーが発生します。
戻り値のT-SQLタイプとCLRタイプが一致しないため、「GetWSClient」のCREATEFUNCTIONが失敗しました。
dllでWebServiceを使用し、それをSQLServerのアセンブリとして統合しようとしています。
私の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結果を返していることを知っています。
だから、私は何を間違っているのですか?