是否可以在WSO2数据服务中选择输出映射?

时间:2013-01-14 23:38:32

标签: wso2 wso2esb wso2dss

我有Oracle存储过程,其中Oracle REF CURSOR为OUT参数。当数据存在于DB中时,执行一个select语句,REF CURSOR将具有映射的select语句中的列,这些列可以在数据服务的OUTPUT映射中访问。但是,当没有用于存储过程的相应输入的数据时,执行不同的select语句。第二个SELECT语句具有不同的列集。 (简而言之,根据两个select语句中具有不同列集的存储过程的输入,执行2个选择语句中的任何一个)

由于我们在数据服务中定义了DB列的输出映射,并且在这种情况下由于不同的选择状态(具有不同的列集)正在执行,因此数据服务无法每次都找到输出映射中定义的所有列我执行存储过程因此我得到以下错误

<axis2ns19:DataServiceFault xmlns:axis2ns19="http://ws.wso2.org/dataservice">Error obtaining parser from data source:DS Fault Message: Error in 'SQLQuery.processStoredProcQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: GET_USER_DS
Location: /GET_USER_DS.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: USER_op
Current Params: {in_user_id=111111111}
Nested Exception:-
DS Fault Message: Error in 'StaticOutputElement.execute', cannot find parameter with type:column name:DASHBOARDID
DS Code: INCOMPATIBLE_PARAMETERS_ERROR
"

有没有办法为Data服务定义可选的输出映射,这样即使输出映射中的列在返回的结果集中不可用,我也不会收到此错误?

请告诉我。 谢谢 作者Abhijit

1 个答案:

答案 0 :(得分:0)

对于DSS 3.0.0 and later版本,您可以为值不确定的结果元素设置optional =“true”。因此,对于从REF_CURSOR和其他select语句返回的元素,请在dbs的结果元素定义中设置optional =“true”。

<result element="element" rowName="elements" >
  <element name="DASHBOARDID" column="DASHBOARDID" xsdType="xs:string" optional="true"/>
</result>
相关问题