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

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

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

  • 创建一个包变量
  • 设置变量以表达式形式求值true
  • 将查询与参数一起放入表达式中,作为另一个包变量
  • 在数据流处将[Oracle Source].[SqlCommand]的表达式设置为打包变量(包含查询作为表达式)

  • 我很满意,但是如果您要在数据流中设置[Oracle Source].[SqlCommand]的表达式,那么在数据流任务内的“Oracle Source”中应设置什么查询?如何获取输出列并执行转换?

    在设置有效的Oracle数据源之前,我将无法执行该程序包。

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

    更新(2014/02/18)-

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



    这是我的查询的WHERE子句,带有变量timestamp-
    Where SL.RECEIVED_DATE = TO_DATE( @[User::Last_Run_Timestamp] , 'dd/mon/yyyy HH24:MI:SS')

    最佳答案

    要使用Attunity Oracle数据源进行参数化,您需要首先设置元数据。通常,仅使用未参数化的查询作为源即可完成此操作。然后,在“控制流”中的“数据流”表达式上,您将把SSIS变量作为源子。

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

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

    10-11 12:18