Sql 从SSIS OLE DB命令执行Oracle函数

Sql 从SSIS OLE DB命令执行Oracle函数,sql,oracle,ssis,sqlcommand,oledbcommand,Sql,Oracle,Ssis,Sqlcommand,Oledbcommand,我试图使用OLE DB命令从oracle调用SSIS函数,我已正确设置了连接,但我认为调用函数的语法不正确 EXEC UPDATE_PERSON ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? output 我已经在一个SQL存储过程中使用了它进行测试&它已经起作用了。oracal连接是第三方的&他们刚刚提供了函数名和预期参数。我应该得到1个返回参数 错误: Error at Data Flow Task [OLE DB Command

我试图使用OLE DB命令从oracle调用SSIS函数,我已正确设置了连接,但我认为调用函数的语法不正确

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".

尝试用大括号将其包裹起来:

{EXEC UPDATE_PERSON ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? output}
我认为Oracle函数没有输出参数——您是否绝对确定这是一个函数而不是一个过程?函数通常也不执行更新。

语法:

SELECT crm_customer.UPDATE_PERSON( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) FROM dual
解决方案完成后,我将更新更多详细信息


感谢语法方面的帮助,您必须将命令“EXCU”更改为“EXEC”

EXEC更新人员?、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、?输出 我必须提到,没有必要{}

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

问候,,
S.ANDOURA

您是在调用函数还是在调用存储过程?我在Oracle中调用函数谢谢我的工作是这样的:选择crm\u customer.UPDATE\u PERSON(?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,?)从dualMy bad开始,这是一个输入错误,我使用的是EXEC。我没有使用SP,我使用的是oracle函数?好吧,由于OLE DB命令设计用于执行sql命令或包装一组sql查询的存储过程,所以您是否考虑过改变调用方法的方式,而改用SP?我可以理解,SP的性能较低从数据库中检索行集的术语“尝试使用SELECT语句调用它“。但是,如果要在包中使用OLE DB命令,则必须检查稍后提出的解决方案。关于S.ANDOURAThanks Ando,我无法更改为SP,因为我正在使用第三方的现有功能连接到第三方。但是谢谢。我想我差不多做到了,只是有几个错误的数据类型参数问题需要解决。好消息!祝你好运,理查德!