2013-06-24 71 views
1

我正在面對帶簡單查詢的wso2數據服務問題。WSO2中的IN子句用法DSS

預期的查詢: 我想使用具有多個值的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

參考包含式「陣列」,它可以有效地使用,讓您的需求滿足的樣本輸入參數以下數據服務查詢配置。

<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 /樣品/ DBS/RDBMS/RDBMSSample.dbs」。

+0

謝謝,它正在爲我工​​作 –

+1

以及如何做一個資源,而不是數組的操作? wso2文檔不是最好的。 –