加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

SSIS – 使用Attunity Oracle Datasource在Oracle Query中使用参

发布时间:2021-03-31 18:45:54 所属栏目:站长百科 来源:网络整理
导读:我在SSIS中使用Attunity Oracle连接器连接到远程Oracle Server. 在我的SSIS包中,我需要连接到Oracle数据库以根据datetime参数获取数据. 我按照建议here写了一个带有参数的SELECT查询: 创建了一个包变量 将变量设置为计算为表达式true 将查询与表达式一起

我在SSIS中使用Attunity Oracle连接器连接到远程Oracle Server.

在我的SSIS包中,我需要连接到Oracle数据库以根据datetime参数获取数据.

我按照建议here写了一个带有参数的SELECT查询:

>创建了一个包变量
>将变量设置为计算为表达式true
>将查询与表达式一起放在表达式中作为不同的包变量
>在数据流中将[Oracle Source].[SqlCommand]的表达式设置为包变量(包含查询作为表达式)

我很高兴在这里,但是如果你在数据流中为[Oracle Source].[SqlCommand]设置表达式,那么我在数据流任务中的“Oracle Source”中设置了什么Query?如何获取输出列并执行转换?

在设置有效的Oracle数据源之前,我无法执行包.

每个建议都说在数据流中设置[Oracle Source].[SqlCommand]属性,但是没有人提到如何配置Oracle源代码.
我在这里错过了什么吗?

更新(2014/02/18) –

基于@billinkc的评论,我使用非参数查询创建了数据源,并在数据流中添加了表达式.当我执行包时,数据源内的查询更改为我的包变量表达式中的任何内容,但它会引发错误:

OCI error encountered. ORA-00936: missing expression

这是查询的WHERE子句,带有可变时间戳 –

SL.RECEIVED_DATE = TO_DATE(@ [User :: Last_Run_Timestamp],’dd / mon / yyyy HH24:MI:SS’)

解决方法

要使用Attunity Oracle数据源进行参数化,您需要先获取元数据集.这通常只需使用非参数化查询作为源来完成.然后,在控制流中,在数据流的表达式上,您将在SSIS变量中作为源.

使用Evaluate as Expression设置为true来设置SSIS变量非常重要,然后必须正确创建公式.与PowerShell不同,令牌不会在字符串中替换.相反,您需要使用经典的字符串连接技术.下面演示如何将Variable @ [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')"

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!