【发布时间】:2009-09-08 18:23:05
【问题描述】:
在我的 SSIS 包中,我想查看特定的 Oracle 视图中是否有数据。 我有一个带有 select count 语句的执行 SQL 任务:
Select CAST( count(*) as Integer) As Row_Count from OWNER.VIEW_MV
我的 RowCount 在结果集中,指向我的变量 User:TableCount。如果我将 TableCount 设置为 Object 以外的任何值,我会收到如下错误:
错误:检查数据时出现 0xC002F309 查看,执行 SQL 任务:错误 赋值时发生 变量“TableCount”:“的类型 分配给变量的值 “User::TableCount”不同于 当前变量类型。变量可能 在执行期间不改变类型。 变量类型是严格的,除了 Object 类型的变量。
但是,如果我确实将数据类型设置为对象,那么在我的下一步脚本任务中,当我读取该对象时,我看不到如何将其转换为整数以便我可以使用和查看它。然后我得到错误:
从“Object”类型到“Integer”类型的转换无效。
用代码
Dim nTableCount As Int32
nTableCount = CInt(Dts.Variables("TableCount").Value)
也许我正在处理这个错误。确定 Oracle 表是否为空,然后根据该知识采取行动的最佳方法是什么?本质上,我们想要一条关于空表的错误消息,而不是继续我们的流程。
更新: 我试过 Select CAST(count(*) as char) As Row_Count from OWNER.VIEW_MV where ROWNUM
现在,我保存为数据类型 Object,但是当我尝试获取值时,将我的 nTableCount 设置为字符串,我可以使用 nTableCount = Dts.Variables("TableCount").Value().ToString() ,但它返回 0。如何从 Object 变量中提取该字符串? (当然,假设它真的把它放在那里。)
【问题讨论】:
标签: sql-server-2005 oracle ssis