如何使用WSO2将动态值传递给Sql

如何使用WSO2将动态值传递给Sql,wso2,db2,wso2esb,wso2dss,Wso2,Db2,Wso2esb,Wso2dss,我的要求是传递动态值,我只是暂时硬编码这些值,有人能帮我吗。提前感谢。(db2数据库) 从类似sname的学生中选择sname(“%abc123%”) 它正在按预期拾取值。但我只是在DSS中硬编码了它,如何动态传递它?下面是示例服务 <data name="dssTest" transports="http https local"> <config enableOData="false" id="TestDB"> <prop

我的要求是传递动态值,我只是暂时硬编码这些值,有人能帮我吗。提前感谢。(db2数据库)

从类似sname的学生中选择sname(“%abc123%”)


它正在按预期拾取值。但我只是在DSS中硬编码了它,如何动态传递它?

下面是示例服务

<data name="dssTest" transports="http https local">              
  <config enableOData="false" id="TestDB">
    <property name="driverClassName">...</property>
    <property name="url">...</property>
    <property name="username">...</property>
    <property name="password">...</property>
  </config>
  <query id="testQuery" useConfig="TestDB">
    <sql>Select sname from student where sname like CONCAT('%', :whereclause, '%')</sql>
    <result element="StudentData" rowName="Student">
      <element column="snumber" name="snumber" optional="true" xsdType="string"/>
      <element column="sname" name="sname" optional="true" xsdType="string"/>
    </result>
    <param name="whereclause" sqlType="QUERY_STRING"/>
  </query>
  <operation name="testQueryOp">
    <call-query href="testQuery">
      <with-param name="whereclause" query-param="whereclause"/>
    </call-query>
  </operation>
</data>

...
...
...
...
从student where sname like CONCAT(“%”,:where子句“%”中选择sname
调用此服务时,可以为where子句发送一个值

<body>                                                                  
  <p:testQueryOp xmlns:p="http://ws.wso2.org/dataservice">
    <p:whereclause>abc123</p:whereclause>
  </p:testQueryOp>
</body>

abc123

感谢Saad Bro的响应,但我无法执行抛出以下错误的操作{“rootCause”:null,“category”:“EISBackendException”,“message”:“DSS服务调用操作失败:getSname”,“timestamp”:“2018-06-27T18:00:37+0530”}后端日志:由以下原因引起:javax.xml.stream.XMLStreamException:DS错误消息:“SQLQuery.processPreNormalQuery”中的错误:DB2 SQL错误:SQLCODE=-440,SQLSTATE=428 84,SQLERRMC=CONCAT;函数,DRIVER=3.57.110 DS代码:DATABASE_ERROR源数据服务:-非常感谢您可以尝试将sqlType从使用“STRING”、“QUERY STRING”尝试的QUERY_STRING更改为STRING,抛出错误:)[2018-06-27 17:55:55470]ERROR{org.wso2.carbon.dataservices.core.DBInOutMessageReceiver}-in-in-out消息接收器DS代码错误:数据库_错误嵌套异常:-javax.xml.stream.XMLStreamException:DS错误消息:“SQLQuery.processPreNormalQuery”中的错误:DB2 SQL错误:SQLCODE=-440,SQLSTATE=42884,SQLERRM C=CONCAT;函数,DRIVER=3.57.110 DS代码:数据库\错误源数据服务:-请:)我不知道它的db2数据库。您是否可以尝试按如下方式更改查询,从student where sname-like-CONCAT(CONCAT(“%”,“:whereclause'),“%”)中选择sname,whereclause-sqlType应该是stringwhere-this是安全的?您正在将SQL作为HTTP参数传递。如何使用此方法抵御SQL注入攻击?让客户端手工编写SQL发送到查询也不是很实际。我想这只有在查询前面有一些ESB时才可行,但即使这样,它也很混乱。