2

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

4

3 回答 3

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>

现在您可以使用 'employeeNumber' 调用 'getEmployees' 并获取特定员工,
或者您可以不使用 'employeeNumber' 调用 'getEmployees' 并获取所有员工。
(不带 'employeeNumber' 的调用是通过省略 'employeeNumber' 标记,或使用 'xsi:nil="true"'。)
显然,您不能以这种方式查询值 'null'。

于 2014-05-08T12:30:11.317 回答
0

好吧,例如

<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 这两个被映射到 getemployeesByNumber 和 getemployeesByNumber2

于 2013-10-14T16:07:26.727 回答
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>

此处若不提入参,则以入参为一。否则您需要创建两个查询并以编程方式处理它们

于 2013-10-12T12:51:49.837 回答