我有一个甲骨文程序与CLOB响应WSO2 DSS呼叫流程提高ORA-22835错误
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伟大的), 正确的,但返回的参数(parm2)会引发错误时长比4000大,像波纹管
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大小大于缓冲区限制。请参阅http://www.dba-oracle.com/t_ora_22835_buffer_too_s mall.htm – Chanikag
感谢您的回复。 但是过程“TEST_XML_PARM_CALLEE”的输入参数(parm1),它的长度大于4000,不会引发错误。 只有返回参数将限制在4000的长度。 –
通过引用URL:[链接](http://dinushasblog.blogspot.tw/2011/08/how-to-call-oracle-stored-function-from。 ), 替换'调用TEST_XML_PARM_CALLEE(?,?) '为' {调用TEST_XML_PARM_CALLEE(?,?)} ' –