【问题标题】:Ssis use an object variable for a conditionSsis 使用对象变量作为条件
【发布时间】:2015-05-13 04:49:36
【问题描述】:

我有一个执行 sql 任务,它将 sql 任务的结果分配给我的许多带有结果集的变量。只有当我使用对象类型作为我的变量类型时,它才有效。然后在那之后,我想使用这些变量来设置一个表达式的约束。通过 ssis 不允许这些操作的对象类型变量。有没有办法解决这个问题?这是我的 sql 语句:

SELECT (SELECT COUNT(*) as s5 from random_table where rownum < 100) as S5,
(SELECT COUNT(*)  as s6 from random_Table_2 where rownum < 100) as s6 from dual

谢谢!

【问题讨论】:

    标签: oracle ssis


    【解决方案1】:

    数据类型不能在 SSIS 中更改,除非基本类型是 Object。但是,对于 Object 类型的变量,您不能任何事情。

    然后,通用方法是使用 Foreach 枚举器来粉碎结果集。对于该 Object 变量中的每一行,您可以处理各个列元素并将 那些 分配给强类型变量(然后在先例约束中使用)。

    针对这个问题的具体目的,您更改了当前正在填充 Object 类型变量的 Execute SQL Task。您提供的查询只会返回 1 行数据(2 列,但这是任意的)。在这种特殊情况下,您可以将执行 SQL 任务的 ResultSet 修改为 SingleRow(而不是您当前设置的 NoneFull)。使用 SingleRow 属性集,您无需将所有内容都转储到单个变量中,而是将强类型 SSIS 变量分配到特定列中。

    例子

    【讨论】:

    • 我已经将我的属性设置为 singleRow 并在结果集选项卡中,然后将我的参数(如 s6)分配给单个变量。但它只接受对象类型变量。例如,我不明白如何将它们放入 int 变量中。
    • 您的变量是对象类型。它总是会起作用的。您需要更改变量的数据类型以与来自 Oracle 的类型保持一致,可能是 Int32 或 Int64
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多