Table SQL 日期 return 类型的值 CLR 函数

Table Valued CLR Function with SQL date return type

我正在尝试创建一个 CLR (C#) table 值函数,它 return 是 table 个日期。

[SqlFunction(
   DataAccess = DataAccessKind.Read,
   FillRowMethodName = "FindDates_FillRow",
   TableDefinition = "ReturnDate date")]
public static IEnumerable BusinessDays(SqlDateTime startDate, SqlDateTime endDate)
{
    //function body
}

public static void FindDates_FillRow(
object resultObj,
out SqlDateTime returnDate)
{
    dayResult result = (dayResult)resultObj;
    returnDate = result.Date;
}

以上代码导致错误,因为 SqlDateTime 类型在 FillRow 上创建的方法签名不同于 SQL 服务器在给定 TableDefinition 属性的情况下所期望的方法签名。

SQL72014: .Net SqlClient Data Provider: Msg 6258, Level 16, State 1, Procedure BusinessDays, Line 1 Function signature of "FillRow" method (as designated by SqlFunctionAttribute.FillRowMethodName) does not match SQL declaration for table valued CLR function'BusinessDays' due to column 1.

如果我将 TableDefinition 更改为日期时间类型,一切正常,但由于没有 SqlDate 类型,我如何 return 日期类型?这甚至可能吗,还是我只需要在 CLR 端使用 datetime 并在我的 SQL 查询中转换为日期?

system.data.sqltypes 中没有 SqlDate 类型,也没有其他仅包含日期的数据类型。这样做的方法是传递一个日期时间并将其转换为 SQL(如果您确实需要转换为日期)。