gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:24:57 25 4
gpt4 key购买 nike

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

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

我遵循了建议here编写带有参数的 SELECT 查询:

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

我已经很好了,但是如果您要在数据流中为[Oracle Source].[SqlCommand]设置表达式,那么我应该做什么查询在“Oracle Source”里面设置数据流任务?如何获取输出列并执行转换?

在设置有效的 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 变量作为源。

重要的是,您的 SSIS 变量应将“作为表达式求值”设置为 true,然后必须正确创建公式。与 PowerShell 不同, token 不会在字符串中替换。相反,您需要使用经典的字符串连接技术。下面演示了将变量 @[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')"

关于oracle - SSIS - 使用 Attunity Oracle 数据源在 Oracle 查询中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21774545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com