【问题标题】:BizTalk WCF-SQL adapter - avoid passing DBNull to table-valued parameterBizTalk WCF-SQL 适配器 - 避免将 DBNull 传递给表值参数
【发布时间】:2013-01-14 15:44:01
【问题描述】:

我有一个 BizTalk 业务流程,它正在发送一条消息,该消息使用 WCF-SQL 适配器生成的架构映射到存储过程。存储过程的参数之一是表值参数。当有 BT 可以转换为表值的记录时,这可以正常工作。但是,如果记录为零,我仍然需要触发 proc,因为提供的其他参数仍然可以执行。但是编排崩溃了

System.NotSupportedException: DBNull value for parameter '@DetailRecords' is not supported. Table-valued parameters cannot be DBNull.

显然你可以绕过这个错误并在不提供该参数的情况下执行存储过程,SQL Server 将自动生成一个空表。

有没有办法让 BizTalk 触发包含表值参数的存储过程,而不尝试将参数作为 DBNull 传递?

【问题讨论】:

  • 不能自己创建一个空的TVP吗?
  • 好吧,我不确定。现在我有一个 BizTalk 映射,可以将我的内部记录转换为 WCF-SQL 记录。因此,如果要使用的映射的记录为零,则 BizTalk 似乎正在尝试传递 DBNull。如果有办法修改我的映射以避免 DBNull,我不知道该怎么做。这真的是我的问题。

标签: sql-server biztalk


【解决方案1】:

首先,将 Record Count functoid 连接到源架构上的重复元素。获取它的输出并将其连接到 Greater Than functoid 以检查行数是否大于零。最后,将 Record Count functoid 的输出端与目标端的表值参数挂钩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多