我在 Mac OSX 10.7.8 上使用 WSO2 4.0.3。我启用了数据服务服务器功能(3.2.2)
处理具有存储过程的数据服务(.dbs 文件),其中 oracle 引用游标作为输出参数。如果存储过程返回数据,则写入的数据服务工作正常,但是当存储过程“未找到数据”时,返回的游标为空,因此不返回元素,因此出现以下错误。
有人可以就如何在 WSO2 数据服务中的 refcursor 上处理这种特定情况提供见解吗?
“[2013-01-11 10:49:02,902] 错误 - SQLQuery DS 错误消息:'StaticOutputElement.execute' 中的错误,找不到类型为:列名:类 DS 代码的参数:INCOMPATIBLE_PARAMETERS_ERROR
DS 故障消息:“StaticOutputElement.execute”中的错误,找不到类型为:列名:类 DS 代码的参数:INCOMPATIBLE_PARAMETERS_ERROR
at org.wso2.carbon.dataservices.core.engine.StaticOutputElement.getParamValue(StaticOutputElement.java:201)
at org.wso2.carbon.dataservices.core.engine.StaticOutputElement.execute(StaticOutputElement.java:239)
at org.wso2.carbon.dataservices.core.engine.OutputElementGroup.execute(OutputElementGroup.java:115)
at org.wso2.carbon.dataservices.core.description.query.Query.writeResultEntry(Query.java:335)
at org.wso2.carbon.dataservices.core.description.query.SQLQuery.processStoredProcQuery(SQLQuery.java:908)
at org.wso2.carbon.dataservices.core.description.query.SQLQuery.runQuery(SQLQuery.java:2044)
"
这是我写的 .dbs 文件
<data name="dsname">
<config id="datas">
<property name="carbon_datasource_name">datas</property>
</config>
<query id="procedure_YEAR" useConfig="datas">
<sql>{callProcdure (?,?,?,?)}</sql>
<result element="array" rowName="dict" >
<element name="status" column="out_status" xsdType="xs:string" />
<element name="error_desc" column="out_error_desc" xsdType="xs:string" />
<element name="class" column="class" xsdType="xs:string" />
<element name="org" column="org" xsdType="xs:string" />
<element name="year" column="year" xsdType="xs:number" />
<element name="week_yr" column="week_yr" xsdType="xs:number" />
</result>
<param name="in_year1" sqlType="INTEGER" type="IN" />
<param name="out_status" sqlType="STRING" type="OUT" />
<param name="out_error_desc" sqlType="STRING" type="OUT" />
<param name="result" sqlType="ORACLE_REF_CURSOR" type="INOUT" />
<!-- <param name="class" sqlType="STRING" type="INOUT" />
<param name="org" sqlType="STRING" type="INOUT" />
<param name="year" sqlType="INTEGER" type="INOUT" />
<param name="week_yr" sqlType="INTEGER" type="INOUT" />
<param name="bill_amount" sqlType="INTEGER" type="INOUT" />
<param name="bill_unit" sqlType="INTEGER" type="INOUT" />
<param name="yoy" sqlType="INTEGER" type="INOUT" />-->
</query>
<operation name="YEAR_op">
<call-query href="procedure_YEAR">
<with-param name="in_year1" query-param="in_year1" />
</call-query>
</operation>
</data>