从SSIS OLE DB命令执行Oracle功能

时间:2014-01-24 10:35:28

标签: sql oracle ssis sqlcommand oledbcommand

我正在尝试使用OLE DB命令为oracle调用oracle中的函数,我已正确设置连接,但我认为我调用该函数的语法不正确?

EXEC UPDATE_PERSON ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? output

我在SQL存储过程中使用它来进行测试&它有效。 oracal连接是第三方&他们刚刚提供了功能名称&预期参数。我应该得到1个返回参数。

错误:

Error at Data Flow Task [OLE DB Command [3013]]: SSIS Error Code DTS_E_OLEDBERROR. AN OLE DB error has occurred. Error code 0x80040e14.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for Oracle" Hresult: 0x80040E14
Description: "ORA-00900: invalid SQL statement".

3 个答案:

答案 0 :(得分:1)

尝试用大括号包裹它:

{EXEC UPDATE_PERSON ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? output}

我认为Oracle函数没有输出参数 - 你绝对肯定这是一个函数而不是一个proc吗?函数通常也不执行更新。

答案 1 :(得分:1)

在您的语法中,您必须将命令“EXCU”更改为“EXEC”。

EXEC UPDATE_PERSON?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? OUTPUT 我必须提到没有必要{}

除此之外,您必须通过指定[databaseName]。[dbo]来了解您正在执行的SP的完整路径。如果需要,

此致 S.ANDOURA

答案 2 :(得分:0)

语法:

SELECT crm_customer.UPDATE_PERSON( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) FROM dual

完成解决方案后,我会更新更多详细信息

感谢您的帮助