2012-12-18 43 views
1

我在Oracle数据库中有一个存储过程。此存储过程返回一个CLOB类型。此CLOB类型包含嵌入的xml。 我用DBlookup中介者这样调用这个存储过程:当我得到的财产“resultado_p”与存储过程我意识到,这个值是不正确的返回值的值如何获取由WSO2中的存储过程返回的CLOB类型ESB

<dblookup> 
<connection> 
<pool> 
<dsName>XeDS</dsName> 
</pool> 
</connection> 
<statement> 
<sql>select pkg_ws_sol_cursos.fu_listado_cursos(?,?) as resultado from dual</sql> 
<parameter xmlns:xs="http://www.example.es" expression="//xs:HASH" type="VARCHAR" /> 
<parameter xmlns:xs="http://www.example.es" expression="//xs:PV2_I_LANGISO" type="VARCHAR" /> 
<result name="resultado_p" column="resultado" /> 
</statement> 
</dblookup> 

。返回值应该是一个包含嵌入式xml的字符串,但事实并非如此。返回的值是这样的一个strig: [email protected] 我认为这是执行oracle.sql.CLOB java类型的toString方法的结果,但我需要获取CLOB的内容以及而不是toString结果。

有没有人调用存储过程返回CLOB类型?

谢谢。

回答

2

是的,DBMediators(DBLookup/DBReport)不支持高级数据类型,例如CLOB,BLOB等开箱即用。正如你已经正确地指出,正在尝试将返回字段的值序列化为一个字符串(因为这是默认行为),而没有正确处理数据类型,这就是为什么你要遵守上述行为。

如果您想要处理所有高级数据类型/ SQL逻辑,我们经常推荐使用WSO2 DSS(或数据服务功能),这些功能为您提供了一整套功能来用于数据操作操作。有了这个,你可以调用任何SQL逻辑,从简单的SELECT开始,到轻松的严格的存储过程。

0

尝试使用: SELECT SYS_XMLGEN(pkg_ws_sol_cursos.fu_listado_cursos(,),XMLFormat( '结果')?)getClobVal()从双

resultado。
相关问题