WSO2 DSS中的IN子句用法

时间:2013-06-24 07:35:30

标签: wso2 wso2dss

我面临着简单查询的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中编写上述查询?

请就此提出建议。

谢谢, EBA

1 个答案:

答案 0 :(得分: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”中。