首页 文章

WSO2 DSS中的IN子句用法

提问于
浏览
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中编写上述查询?

请指教我 .

谢谢,Eba

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”中 .

相关问题