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

ここで、入力パラメーターについて言及しない場合、入力パラメーターが 1 つとして使用されます。または、2 つのクエリを作成し、それらをプログラムで処理する必要があります

于 2013-10-12T12:51:49.837 に答える
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"/>

select * from 従業員

2 つのクエリ employeesByNumberSQL、employeesByNumberSQL1 があり、これら 2 つは getemployeesByNumber および getemployeesByNumber2 にマップされます。

于 2013-10-14T16:07:26.727 に答える