【问题标题】:WSO2 DSS call procedure with CLOB response raise ORA-22835 error带有 CLOB 响应的 WSO2 DSS 调用过程引发 ORA-22835 错误
【发布时间】:2016-04-21 16:39:16
【问题描述】:

我有一个 Oracle 程序

TEST_XML_PARM_CALLER

调用过程

TEST_XML_PARM_CALLEE(parm1 IN CLOB, parm2 OUT CLOB) 

通过 WSO2 ESB、WSO2 DSS。

parm1 是 CLOB 参数,从过程 TEST_XML_PARM_CALLER 发送 XML 内容, parm2 是从过程 TEST_XML_PARM_CALLEE 返回 XML 内容的 CLOB 参数。

从 TEST_XML_PARM_CALLER 到 ESB 到 DSS 到 TEST_XML_PARAM_CALLEE 的调用通过 CLOB 内容是正确的(字符串长度大于 4000), 但是当长度大于 4000 时返回参数(parm2)会引发错误,如下所示

ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 6024, maximum: 4000)

在WSO2 DSS中,配置如下

<data name="test_xml_parm">
   <config id="test_db">
      <property name="carbon_datasource_name">test_db</property>
   </config>
   <query id="qry_test_xml_parm" useConfig="test_db">
      <sql>call TEST_XML_PARM_CALLEE(?,?)</sql>
      <result element="rcd" rowName="row">
         <element column="rtn_clob" name="rtn_clob" xsdType="string"/>
      </result>
      <param name="clob_xml" ordinal="1" sqlType="STRING"/>
      <param name="rtn_clob" ordinal="2" sqlType="STRING" type="OUT"/>
   </query>
   <operation name="op_test_xml_parm">
      <call-query href="qry_test_xml_parm">
         <with-param name="clob_xml" query-param="clob_xml"/>
      </call-query>
   </operation>
</data>

谁能告诉我怎么解决?

【问题讨论】:

  • 这是由于 LOB 大小大于缓冲区限制。请参考dba-oracle.com/t_ora_22835_buffer_too_small.htm
  • 感谢您的回复。但是程序“TEST_XML_PARM_CALLEE”的输入参数(parm1),长度大于4000,没有报错。只是返回参数会将长度限制在4000以内。
  • 参考网址:link,将&lt;sql&gt;call TEST_XML_PARM_CALLEE(?,?)&lt;/sql&gt;替换为&lt;sql&gt;{call TEST_XML_PARM_CALLEE(?,?)}&lt;/sql&gt;

标签: oracle wso2 wso2dss


【解决方案1】:

这是一个老问题,我不知道 wso2Dss 版本。

我在使用 wso2DSS 4.4.2 时遇到了类似的问题

1) 设置参数 sqlType 为 "CLOB" 2) 用 ojdbc6.jar 替换 ojdbc5.jar (否则你会得到 java.lang.AbstractMethodError: setClob is abstract error。

我仍然有 xml 的问题(我必须在 CDATA 中输入输入并且响应被转义( &amp;lt;)但我应该能够在 ESB 端处理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多