我正在尝试使用wso2dss中的用户定义数据类型(UDT)从oracle对象中检索数据,部分它正在工作,并从中获取数据。但是,当我配置数组的嵌套类型对象时,它就停止工作了,这可能是映射问题。
场景:I创建了4种类型的对象,它混合了普通对象和myType4对象,试图使用返回myType4对象的函数访问。此外,没有Array,一切都很好,但是对于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>请指点?
发布于 2017-06-15 00:02:03
我与WSO2团队联系过,DSS不支持这种场景,但是您可以使用游标对列表类型的复杂对象获取数据。
https://stackoverflow.com/questions/43951609
复制相似问题