我正在使用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查询中将其设置为偏移量,请提出建议..
答案 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>
`