我在使用WCF-SQL适配器从BizTalk 2013将值插入到类型为decimal(38,20)的SQL Server列中时遇到问题。我收到InvalidCastException消息:“ System.InvalidCastException:指定的演员表无效”
如果我测试列类型为十进制(18,18),则可以正常工作。
似乎WCF-SQL适配器不能非常高精度地处理小数。问题是什么限制?而且,如果有解决方法?
当我从数据库表信息生成XSD时,十进制(38,20)变成长度限制为40的xs:string。也许这表明WCF-SQL适配器无法处理这种精度...?我还测试过将XSD更改为xs:decimal,但没有区别。
有人吗?
添加: 找不到解决此限制的任何“好方法”。
最终设置为:XML => WCF-SQL适配器=>具有表类型参数的存储过程,其中包含varchar(40)列=>将CAST表变量列一对一转换为十进制(38,20)=>插入目标表。
因此,解决方案是修改表类型以接受varchar,然后在存储过程中手动进行转换。
如果有人可以解释更好的解决方案,那将很高兴!
答案 0 :(得分:2)