【发布时间】:2019-03-02 01:42:54
【问题描述】:
我在使用 WCF-SQL 适配器从 BizTalk 2013 将值插入十进制 (38, 20) 类型的 SQL Server 列时遇到问题。我收到 InvalidCastException 消息:“System.InvalidCastException: Specified cast is not valid”
如果我测试列类型 decimal(18,18) 它可以工作。
似乎 WCF-SQL 适配器不能以非常高的精度处理十进制。问题是限制是什么?而且,是否有解决方法?
当我从数据库表信息生成 XSD 时,decimal(38,20) 变成了长度限制为 40 的 xs:string。也许这表明 WCF-SQL 适配器无法处理这样的精度......?我还测试了将 XSD 更改为 xs:decimal,但没有区别。
有人吗?
添加: 没有找到任何“好”的方法来处理这个限制。
最终设置是:XML => WCF-SQL 适配器 => 具有包含 varchar(40) 列的表类型参数的存储过程 => 将表变量列一一转换为十进制 (38,20) => 插入目标表。
所以,解决方法是修改表类型以接受varchar,并在存储过程中手动转换。
如果有人能解释更好的解决方案会很高兴!
【问题讨论】:
标签: biztalk biztalk-2013