【问题标题】:How to set client request parameter as a offset in wso2esb如何将客户端请求参数设置为 wso2esb 中的偏移量
【发布时间】:2014-03-13 09:04:56
【问题描述】:

我正在使用 wso2esb4.7.0 和 wso2dss 3.1.0。我在 esb 中的代理服务允许从数据库中检索特定的记录数。为此,我必须在用 wso2dss 编写的查询中使用限制和偏移量。查询如下:

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

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

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

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

【问题讨论】:

    标签: wso2 limit wso2esb wso2dss


    【解决方案1】:

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

    <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>
    

    `

    【讨论】:

      【解决方案2】:

      您可以修改数据库中的“查询”部分以设置输入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>
      

      【讨论】:

      • 在您的情况下,employeeNumber 应更改为 StartRecord
      • 问题在于limit、offset、top等子句,而不是'where'子句。在这种情况下,StartRecord 不是表字段。
      猜你喜欢
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2012-03-18
      • 2018-07-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多