0x80040e51描述:“提供程序无法派生参数信息,并且尚未调用SetParameterInfo。”

时间:2012-05-02 15:29:12

标签: oracle ssis

我正在尝试使用where子句(包括

)对oracle执行查询
BETWEEN date AND date2

第一轮研究表明,oracle OLEDB提供程序不允许参数化查询,这些应该在变量中设置。所以我创建了3个变量。 2用于保存正确填充的日期,以及用于保存查询的结果为:

的表达式
 BETWEEN to_date('" + (DT_WSTR, 30)@[User::lastRun]  + "','DD/MM/YYYY HH:MI:SS AM') AND to_date('" + (DT_WSTR, 30) @[User::thisRun] + "','DD/MM/YYYY HH:MI:SS AM')"

当我在表达式构建器中单击“评估表达式”时,它会正确评估

BETWEEN to_date('1/1/1900','DD/MM/YYYY HH:MI:SS AM') AND
to_date('1/1/2010','DD/MM/YYYY HH:MI:SS AM')

我能够使用其他工具成功地对抗oracle。

但是当我尝试运行包时,我会收到:

  

[mySource 1]错误:SSIS错误代码DTS_E_OLEDBERROR。 OLE DB   错误已经发生。错误代码:0x80040E51。 OLE DB记录是   可用。来源:“OraOLEDB”Hresult:0x80040E51描述:   “提供者无法导出参数信息,而SetParameterInfo也有   没被打电话。“。

其中mySource是OLE DB源。它将AccessMode设置为“SQL Command From Variable”,SQLCommandVariable设置为我的查询变量。

我还尝试手动设置所有输出外部列,并更改我在查询中选择的一些值以抛弃oracle DATE数据类型:

to_char(PT.CREATED_DTTM,'DD/MM/YYYY HH:MI:SS AM')

我还是SSIS的新手,所以我甚至不确定我是否正确找到了这个错误根源的正确位置。任何人都有想法从哪里开始?

根据要求截图。如您所见,“from variable”查询在预览模式下按预期工作,但当我尝试执行它时,我收到错误。

Control Flow Data Source Debug error

1 个答案:

答案 0 :(得分:1)

我最终在DataFlow的“表达式”中设置了这个,而不是在OLD DB源上,确保变量仍然具有“EvaluateAsExpression”= True。

您还可以看到我已从OLE DB更新为使用Attunity Oracle connector

DataFlowSource