我有一个执行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
谢谢!
答案 0 :(得分:0)
除非基类型为Object,否则数据类型不能在SSIS中更改。但是,您无法使用Object类型的变量以表达方式 。
然后,通用方法是使用Foreach枚举器 shred 结果集。对于该Object变量中的每一行,您可以寻址各个列元素并将那些分配给强类型变量(然后在先验约束中使用)。
此问题的特定目的是,更改当前填充Object类型变量的Execute SQL Task。您提供的查询只会返回1行数据(2列,但这是任意的)。在这种特殊情况下,您可以将执行SQL任务的ResultSet
修改为SingleRow
(而不是当前设置的None
或Full
。使用SingleRow属性集,您可以将强类型SSIS变量分配到特定列中,而不是将所有内容转储到单个变量中。
实施例