我正在使用SSIS中的Attunity连接器连接到远程Oracle服务器。
在我的SSIS包中,我需要连接到Oracle数据库,以便根据日期时间参数获取数据。
我按照建议这里编写了一个带有参数的SELECT查询:
[Oracle Source].[SqlCommand]在数据流处的表达式设置为包变量(包含作为表达式的查询)我在这里做得很好,但是如果您要在数据流上为[Oracle Source].[SqlCommand]设置一个表达式,那么我应该在数据流任务中的"Oracle“中设置什么查询?如何获得输出列并执行转换?
在设置有效的Oracle数据源之前,我无法执行该包。
每个建议都说要在数据流中设置[Oracle Source].[SqlCommand]属性,但是没有人提到如何配置Oracle。我是不是漏掉了什么?
最新情况(2014/02/18) -
基于@billinkc的注释,我使用非参数查询创建了数据源,并在数据流中添加了表达式。执行包时,数据源内的查询更改为包变量表达式中的任何内容,但会引发错误:
遇到了OCI错误。ORA-00936:缺少表达式
下面是查询的WHERE子句,带有可变时间戳-
Where SL.RECEIVED_DATE = TO_DATE( @[User::Last_Run_Timestamp] , 'dd/mon/yyyy HH24:MI:SS')
发布于 2014-02-19 02:52:25
要使用Attunity数据源进行参数化,您需要首先获得元数据集。这通常是通过使用非参数化查询作为源来完成的。然后,在Control流中,在数据流的表达式中,您将把SSIS变量中的子变量作为源。
重要的是要将SSIS变量设置为true,然后必须正确地创建公式。与PowerShell不同的是,这些令牌不会在字符串中替换。相反,您需要使用经典的字符串连接技术。下面演示如何将变量@[User::Last_Run_Timestamp]转换为一个字符串,该字符串允许我通过+将其与过滤器的其余部分连接起来。
"SELECT * FROM Table SL Where SL.RECEIVED_DATE = TO_DATE( "
+ (DT_WSTR, 24)@[User::Last_Run_Timestamp]
+ " , 'dd/mon/yyyy HH24:MI:SS')"发布于 2014-07-30 04:53:10
我只需要处理这件事。这并不是很直观,但是跟着.
更多细节:http://sornanara.blogspot.com/2013/11/ssis-use-dynamic-sql-in-oracle-source.html
https://stackoverflow.com/questions/21774545
复制相似问题