You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Execute SQL Task映射Decimal变量丢失小数点问题求助

SSIS Execute SQL Task 小数丢失问题解决方案
  • 检查源列与聚合结果的数据类型
    确认Sales表中Amount列的数据类型是decimal/numeric而非整数类型(如int/bigint)。若列类型正确,可在SQL中显式指定聚合结果的精度,强制返回固定小数位的数值:

    SELECT CAST(SUM(Amount) AS decimal(18,2)) AS TotalSales 
    FROM Sales 
    WHERE Customer = ?
    

    避免SSIS自动推断数据类型时出现精度丢失。

  • 精确匹配变量与结果集的类型配置
    在Execute SQL Task的「结果集」选项卡中,严格匹配变量与结果列的类型:

    1. 若SQL返回decimal(18,2),将User::SalesAmount变量的类型设为decimal,并手动设置精度(Precision)为18、小数位数(Scale)为2,不要使用默认的decimal配置。
    2. 放弃使用double类型,浮点数的二进制存储特性易导致精确数值的精度丢失,decimal是更适合财务类数值的类型。
  • 修正Script Task中的变量读取逻辑
    在Script Task中读取变量时,必须使用对应的数据类型转换,禁止隐式转换:

    // C#示例:正确读取decimal变量
    decimal salesAmount = (decimal)Dts.Variables["User::SalesAmount"].Value;
    

    若错误将变量值转为整数类型(如int/long),会直接截断小数位,导致数值异常放大。

  • 调整连接管理器的转换设置
    检查OLE DB连接管理器的属性,禁用「自动缩放数值」「保留整数精度」类的自动转换选项,部分驱动会默认对小数进行缩放处理,导致小数点丢失。

内容的提问来源于stack exchange,提问作者Tripanosomagambiense

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:47:35