【发布时间】:2017-06-15 08:02:03
【问题描述】:
我正在尝试使用 wso2dss 中的用户定义数据类型(UDT)从 oracle TYPE 对象中检索数据,部分它正在工作并从中获取数据。 但是,当我配置了 Array 的嵌套 TYPE 对象然后它停止工作时,它可能是映射问题。
场景: 我创建了 4 个 TYPE 对象,它们混合了普通对象和 Array 对象,尝试使用返回 myType4 对象的函数进行访问。此外,没有 Array 一切正常,但是当涉及到 数组,它不能在 wso2dss 中使用索引。我们只能使用索引值访问 UDT 对象,和我使用的一样。
错误:
<faultstring>
DS Fault Message: Error in 'SQLQuery.processStoredProcQuery': DS Fault Message: The array 'myArray1' does not exist DS Code: UNKNOWN_ERROR DS Code: DATABASE_ERROR Source Data Service:- Name: Details Location: /details.dbs Description: N/A Default Namespace: http://ws.wso2.org/dataservice Current Request Name: _getData Current Params: {} Nested Exception:- DS Fault Message: The array 'myArray1' does not exist DS Code: UNKNOWN_ERROR
</faultstring>
SQL:
CREATE OR REPLACE TYPE myType1 IS OBJECT (col1 VARCHAR2(100 CHAR) ,col2 VARCHAR2(2000 CHAR));
CREATE OR REPLACE TYPE myType2 IS TABLE OF VARCHAR2(1000);
CREATE OR REPLACE TYPE myType3 IS TABLE OF myType1;
CREATE OR REPLACE TYPE myType4 is OBJECT(
col11 VARCHAR2(50),
col12 myType3,
col13 myType2);
CREATE OR REPLACE PACKAGE myPackage IS
FUNCTION getData RETURN myType4;
end myPackage;
WSO2DSS DBS 文件:
<data enableBoxcarring="true" name="Data" serviceNamespace="">
<config enableOData="false" id="MYCONFIG">
<property name="carbon_datasource_name">MYCONFIG</property>
</config>
<query id="qDetails" useConfig="MYCONFIG">
<sql>
{call ?:=myPackage.getData();}
</sql>
<result element="MYDetailResponse" rowName="Details">
<element column="MY_T[0]" name="data1" xsdType="string"/>
<element arrayName="myArray1" column="MY_T[1]" name="datalist1" />
<element arrayName="myArray2" column="MY_T[2]" name="datalist2"/>
</result>
<param name="MY_T" ordinal="1" sqlType="STRUCT" structType="MYTYPE4" type="OUT"/>
</query>
<resource method="GET" path="data">
<call-query href="qDetails"/>
</resource>
</data>
请指教?
【问题讨论】: