1

我正面临 wso2 数据服务问题的简单查询。

预期查询:我想使用具有多个值的 IN 子句。这是我的示例查询:

SELECT ORGANIZATION_ID, ORGANIZATION_NAME FROM ORGANIZATION WHERE ORGANIZATION_ID IN (?)
ORDER BY ORGANIZATION_NAME ASC

出现错误:当我尝试使用“1,2,3”值的 Web 服务时,出现 javax.xml.stream.XMLStreamException 错误。

我如何在 WSO2 DSS 中编写上述查询?

请给我建议。

谢谢,埃巴

4

1 回答 1

4

请参阅以下数据服务查询配置,其中包含“ARRAY”类型的示例输入参数,您可以有效地使用它来满足您的要求。

<query id="setSalaryForEmployeesQuery" useConfig="default">
          <sql>update Employees set salary=:salary where employeeNumber in (:employeeNumbers)</sql>
          <param name="salary" ordinal="1" paramType="SCALAR" sqlType="DOUBLE" type="IN"/>
          <param name="employeeNumbers" ordinal="2" paramType="ARRAY" sqlType="INTEGER" type="IN"/>
</query>

在那里,如果您引用名为“employeeNumbers”的输入映射配置,它基本上解决了查询中提到的相同要求。

要尝试此功能,您可以使用每个数据服务提供的“tryIt”功能(类似于其他服务类型),与上述配置对应的数据服务请求格式如下图所示。

<p:setSalaryForEmployees xmlns:p="http://ws.wso2.org/dataservice/samples/rdbms_sample">
              <!--Exactly 1 occurrence-->
              <xs:salary xmlns:xs="http://ws.wso2.org/dataservice/samples/rdbms_sample">1000</xs:salary>
              <!--1 or more occurrences-->
              <xs:employeeNumbers xmlns:xs="http://ws.wso2.org/dataservice/samples/rdbms_sample">1011</xs:employeeNumbers>
              <xs:employeeNumbers xmlns:xs="http://ws.wso2.org/dataservice/samples/rdbms_sample">1022</xs:employeeNumbers>
</p:setSalaryForEmployees>

包含上述配置片段的完整数据服务配置可以位于 DSS 产品存档中的“DSS_HOME/sample/dbs/rdbms/RDBMSSample.dbs”中。

于 2013-06-24T08:48:41.327 回答