使用 wso2,DSS 版本 3.01,我试图有一个可以是可选参数的输入参数。用户可以说,给我这个特定代码的所有信息,或者如果用户没有指定任何代码,我想给所有数据行。你能帮我吗?
问问题
2136 次
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 回答