0

Mac OSX 10.7.8 で WSO2 4.0.3 を使用しています。Data Services サーバー機能を有効にしています (3.2.2)

Oracle ref カーソルを out パラメータとして持つストアド プロシージャを持つデータ サービス (.dbs ファイル) で作業しています。ストアド プロシージャがデータを返す場合、書き込まれたデータ サービスは正常に動作していますが、ストアド プロシージャに「データが見つからない」場合、返されるカーソルは空であるため、要素が返されないため、以下のエラーが発生します。

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>
4

2 に答える 2

1

DSS 3.0.0 以降のバージョンでは、値が不明な結果要素に対して optional="true" を設定できます。したがって、REF_CURSOR から返される要素の場合、データベースの結果要素定義で optional="true" を設定します。

元:

<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" optional="true"/>
    <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>
于 2013-01-11T08:33:47.603 に答える
0

おそらくつづり?callProcdure = callProcedure

于 2015-06-12T07:33:01.230 に答える