首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSIS -使用Attunity数据资源在Oracle查询中使用参数

SSIS -使用Attunity数据资源在Oracle查询中使用参数
EN

Stack Overflow用户
提问于 2014-02-14 08:44:22
回答 2查看 7.8K关注 0票数 5

我正在使用SSIS中的Attunity连接器连接到远程Oracle服务器。

在我的SSIS包中,我需要连接到Oracle数据库,以便根据日期时间参数获取数据。

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

  1. 创建包变量
  2. 将变量设置为表达式true。
  3. 将查询与参数一起作为不同的包变量放在表达式中。
  4. [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')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-19 02:52:25

要使用Attunity数据源进行参数化,您需要首先获得元数据集。这通常是通过使用非参数化查询作为源来完成的。然后,在Control流中,在数据流的表达式中,您将把SSIS变量中的子变量作为源。

重要的是要将SSIS变量设置为true,然后必须正确地创建公式。与PowerShell不同的是,这些令牌不会在字符串中替换。相反,您需要使用经典的字符串连接技术。下面演示如何将变量@[User::Last_Run_Timestamp]转换为一个字符串,该字符串允许我通过+将其与过滤器的其余部分连接起来。

代码语言:javascript
复制
"SELECT * FROM Table SL Where SL.RECEIVED_DATE = TO_DATE( " 
+ (DT_WSTR, 24)@[User::Last_Run_Timestamp] 
+ " , 'dd/mon/yyyy HH24:MI:SS')"
票数 7
EN

Stack Overflow用户

发布于 2014-07-30 04:53:10

我只需要处理这件事。这并不是很直观,但是跟着.

  • 在“控制流设计器”上,右键单击数据流本身并打开“属性”。
  • 查找“表达式”并单击省略号以打开表达式编辑器。
  • 在“属性”下,选择“甲骨文”Source.SqlCommand,然后可以生成表达式。

更多细节:http://sornanara.blogspot.com/2013/11/ssis-use-dynamic-sql-in-oracle-source.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21774545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档