如何在wso2esb中将客户端请求参数设置为偏移量

时间:2014-02-14 06:05:16

标签: wso2 limit wso2esb wso2dss

我正在使用wso2esb4.7.0和wso2dss 3.1.0。我在esb中的代理服务允许从数据库中检索特定的no记录。因为我必须在wso2dss中编写的查询中使用limit和offset。查询如下:

<sql>SELECT firstname, lastname FROM public.testlogin limit 5 offset ?</sql>

按照上面的查询,我已经在查询中设置了限制但是客户端在请求中提供了偏移量。我的要求是我必须从客户端请求的偏移中检索5条记录。问题是..我应该检索客户端request.client请求中的offset 如下:

LogMediator To:/ services / GetTaskDetails,MessageID:urn:uuid:caeaaebb-2239-4639-b1a2-094c22650de0,Direction:request, StartRecord = 6 Envelope :. 。 。

这里StartRecord是上面请求中的偏移量,我想在wso2 dss查询中将其设置为偏移量,请提出建议..

2 个答案:

答案 0 :(得分:0)

您可以修改dbs中的“查询”部分以设置输入param。请参阅以下示例。它的param名称为employeeNumber。这意味着,数据服务服务器将从SOAP请求中获取employeeNumber参数。你可以适当修改。如果有多个变量(即'?'符号),那么param的排序很重要。

完整的dbs示例可以在RDBMSSample.dbs中找到。

   <query id="employeesByNumberSQL" useConfig="default">
      <sql>select * from Employees where employeeNumber = ?</sql>
      <result element="employees" rowName="employee">
         <element column="lastName" name="last-name" xsdType="string"/>
         <element column="firstName" name="first-name" xsdType="string"/>
         <element column="email" name="email" xsdType="string"/>
         <element column="salary" name="salary" xsdType="double"/>
      </result>
      <param name="employeeNumber" ordinal="1" paramType="SCALAR" sqlType="INTEGER" type="IN"/>
   </query>

答案 1 :(得分:0)

查询应与定义如下的查询和操作一起使用: `

<query id="SELECT" useConfig="MyDataSource">
    <sql> SELECT firstname, lastname FROM public.testlogin limit 5 offset ? ;</sql>
    <result element="patients" rowName="patient">
        <element column="firstname" name="firstname" xsdType="string"/>
        <element column="lastname" name="lastname" xsdType="string"/>
    </result>
    <param name="offset" optional="false" sqlType="INTEGER"/>
</query>
<operation name="getPatients">
    <call-query href="SELECT">
        <with-param name="offset" query-param="offset"/>
    </call-query>
</operation>

`