我有一個甲骨文程序與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(?,?)} ' –