使用输入参数作为可选输入

时间:2013-10-11 20:25:51

标签: wso2 wso2dss input-parameters

使用wso2,DSS版本3.01,我试图有一个输入参数,可以作为可选参数。用户可以说,给我这个特定代码的所有信息,或者如果用户没有指定任何代码,我想给出所有数据行。你能帮我吗?

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作,而不是为每个可选参数创建查询:

<query id="selectEmployees" useConfig="default">
   <sql>select * from Employees where (:employeeNumber is null or employeeNumber = :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 defaultValue="#{NULL}" name="employeeNumber" ordinal="1" paramType="SCALAR" sqlType="INTEGER" type="IN"/>
</query>
<operation name="getEmployees">
   <call-query href="selectEmployees">
      <with-param name="employeeNumber" query-param="employeeNumber"/>
   </call-query>
</operation>

现在你可以打电话给&#39; getEmployees&#39;与&#39; employeeNumber&#39;并获得特定的员工,
或者你可以打电话给'getEmployees&#39;没有&#39; employeeNumber&#39;并获得所有员工 (在没有&#39; employeeNumber&#39;的情况下拨打电话,省略&#39; employeeNumber&#39;标签,或使用&#39; xsi:nil =&#34; true&#34;&#39;。)<登记/> 显然,您无法查询值&#39; null&#39;这样。

答案 1 :(得分:0)

您可以通过为输入参数提供默认值来使输入参数可选。例如

<query id="MyQ" useConfig="myDS">
  <sql>select cust_id,name from customer where cust_id = ?</sql>
  <result element="Entries" rowName="Entry">
     <element column="cust_id" name="cust_id" xsdType="string"/>
     <element column="name" name="name" xsdType="string"/>
  </result>
  <param defaultValue="1" name="cust_id" sqlType="INTEGER"/>
</query>

如果您没有提及输入参数,则将输入参数作为一个参数。否则你需要创建两个查询并以编程方式处理它们

答案 2 :(得分:0)

ok soo例如

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

      从员工中选择*                                                                                                     

你有两个查询employeesByNumberSQL,employeesByNumberSQL1这两个被映射到thegetemployeesByNumber和getemployeesByNumber2