SQL Server 扩展函数不能返回空值

uyhoqukh  于 2022-11-21  发布在  其他
关注(0)|答案(2)|浏览(221)

我正在biztalkMap中使用下面的脚本functoid将中的字符串转换为dateTime

public DateTime? ConvertOpenDate(string openDate)
{
    DateTime oDate;
    if (!DateTime.TryParseExact(openDate, "yyyy-MM-DD HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out oDate))
    {
         return null;
    }
    else
    {
         return oDate;
    }
}

但如果说
扩展函数不能返回空值。
如何处理此问题。我正在将日期时间插入MS SQL DB

cgvd09ve

cgvd09ve1#

这是已知行为:Known issues in BizTalk Server 2013,解决方法为“返回字符串.空值或其他替代值以表示空方案.”
不支持返回null
故障现象
当您从functoid返回空值时,Map失败,并收到以下一般错误消息...
当您在Visual Studio中测试相同的Map时,它会提供更具描述性的错误消息:
调用的目标引发了异常错误。扩展函数不能返回空值。
注XslCompiledTransform类不支持从转换中调用的函数返回空值。
解析度
返回字符串。空值或其他替代值表示空方案。如果需要,请使用全局变量使空值在多个函数中可用。

jucafojl

jucafojl2#

解决方案是防止将空值Map为functoid的输入。这可以通过组合LogicalExistence和值Mapfunctoid(用于分隔文件)或IsNil和值Mapfunctoid(用于位置文件,因为空格在这种文件中被视为“存在”)来实现。

相关问题