【问题标题】:Executing Oracle stored procedure with XMLTYPE Output and capturing it in a SSIS variable使用 XMLTYPE 输出执行 Oracle 存储过程并将其捕获到 SSIS 变量中
【发布时间】:2013-11-25 08:53:48
【问题描述】:

我迫切需要帮助执行一个 Oracle 存储过程,该过程将 Oracle XMLTYPE 的 XML 作为输入并输出 Oracle XMLTYPE 的 XML。

我应该能够使用带有输入变量映射和输出变量映射的 SSIS 执行 SQL 任务来执行这个 Oracle 存储过程。

我尝试使用 OLEDB 适配器和 ADO.NET 适配器,但未能成功。

我能够通过使用表达式构建脚本来使输入变量类型工作,但无法获得输出。

如果有人使用 XMLTYPE 数据类型执行 Oracle 存储过程,如果您能指出正确的方向,那将是非常有帮助的

这是我试图在 SSIS 中执行的 Oracle 存储过程。

declare
  x_api_call XMLTYPE := XMLTYPE('<APICall><SeqID>110682</SeqID></APICall>');
  x_result XMLTYPE; 
BEGIN
  XML_READ_API.GET_PERSON ( p_api_call => x_api_call, p_result => x_result );
END;

我试图在 SSIS 中执行上述 Oracle 过程,如下所示,并且很难确定变量连接类型和我应该用来捕获 XML 的变量类型。

declare
BEGIN
  XML_READ_API.GET_PERSON ( p_api_call => ?, p_result => ? );
END;

提前致谢。

【问题讨论】:

  • 保罗,我正在尝试做同样的事情。您是否找到了解决此问题的解决方案/解决方法?

标签: sql oracle plsql ssis xmltype


【解决方案1】:

Xmltype 是一个复杂的东西,包含 XML 文档的二进制表示。所以它作为两个不同系统之间的接口类型标准化的可能性很小。

尝试在CLOB参数中将XML作为文本传递:

declare
  x_result XMLTYPE; 
BEGIN
  XML_READ_API.GET_PERSON ( p_api_call => XMLTYPE(?), p_result => x_result );
  ? := x_result.getCLOBVal;
END;

SQLFiddle illustration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多