我正在尝试使用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".
答案 0 :(得分:1)
尝试用大括号包裹它:
{EXEC UPDATE_PERSON ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? output}
我认为Oracle函数没有输出参数 - 你绝对肯定这是一个函数而不是一个proc吗?函数通常也不执行更新。
答案 1 :(得分:1)
EXEC UPDATE_PERSON?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? OUTPUT 我必须提到没有必要{}
除此之外,您必须通过指定[databaseName]。[dbo]来了解您正在执行的SP的完整路径。如果需要,
此致 S.ANDOURA
答案 2 :(得分:0)
语法:
SELECT crm_customer.UPDATE_PERSON( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) FROM dual
完成解决方案后,我会更新更多详细信息
感谢您的帮助