【问题标题】:Appropriate .Net data type for decimal(20,0)十进制(20,0)的适当.Net数据类型
【发布时间】:2010-10-22 23:11:03
【问题描述】:

我有一些返回十进制(20,0)数据类型的 sql。在 SSIS 中,我有一个带有 foreach 循环的包。在我的变量映射中,我会将它映射到什么类型的变量?我尝试过 Int32、Int64、double,但仍然收到错误“分配给变量“User::iID”的值的类型与当前变量类型不同...”

【问题讨论】:

    标签: .net sql-server ssis types


    【解决方案1】:

    你尝试过十进制吗?

    【讨论】:

    • ssis 设计器中没有小数或浮点数的选项
    【解决方案2】:

    .NET 十进制有 decimal.ToInt64()decimal.ToInt32() 等方法。

    【讨论】:

      【解决方案3】:

      我的建议是浮点数或小数。

      【讨论】:

      • ssis 设计器中没有小数或浮点数的选项
      【解决方案4】:

      SQL decimal(20,0) 的精度为 20,相当于 13 个字节的存储空间。 .Net 十进制是 16 个字节,应该可以工作。

      【讨论】:

        【解决方案5】:

        SSIS 确实有 Decimal 和 Numeric 类型。您可以使用其中任何一个,它都会通过(可能在 Union All 上除外,您应该确保它们具有相同的精度和比例)。

        详细了解数据类型here

        【讨论】:

        • 在哪里?在变量窗口中,我可以选择 Boolean、DBNull、Double、Int16、Int32、Int64、Object、SByte、String、UInt32、UInt64,但不能选择小数或数字
        【解决方案6】:

        在将 SQL 数据类型放入 Int64 包变量之前,您需要将其转换为 Int64。

        你是怎么得到它的,作为一个输出参数?

        在数据流中,您显然会将其读入十进制/数字,然后在数据转换组件中转换为 Int64。

        如果您尝试直接从执行 SQL 命令任务映射输出参数,您可能必须使用临时对象包变量,然后在脚本任务中将其转换为真正的 Int64 包变量。

        【讨论】:

          【解决方案7】:

          在我的例子中,SSIS 变量设计器没有显示 Decimal 或 Numeric 数据类型以选择将我的 decimal(18,2) 值放入其中。

          我将变量更改为 Object,并且能够从一个存储过程的结果集中读取 Decimal(18,2) 值,并将其作为 Money 类型的参数传递给第二个 SP。

          所以如果你在变量列表中找不到适合你的类型,我会使用“Object”。

          【讨论】:

            猜你喜欢
            • 2012-12-07
            • 2011-12-23
            • 1970-01-01
            • 2014-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多