1

我有一个 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 传递?

4

1 回答 1

2

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

于 2013-01-15T14:38:58.687 回答