Использование входного параметра в качестве дополнительного входа

Используя wso2, DSS версии 3.01, я пытаюсь получить входной параметр, который может быть необязательным параметром. Пользователь может сказать, дайте мне всю информацию для этого конкретного кода, или, если пользователь не указывает никакого кода, я хочу предоставить все строки данных. Вы можете помочь?


person user2872396    schedule 11.10.2013    source источник
comment
Вы хотите, чтобы пользователь указал какой-то критерий для какого-то запроса?   -  person cmd    schedule 12.10.2013
comment
да. Я использовал ввод в качестве параметра. Я не уверен, что значение по умолчанию можно использовать, как показано ниже, от пользователя @poohdedoo, поскольку я хочу отображать все коды, а не только один. Один код может быть указан пользователем. Общий sql - это в основном то, что у меня есть, как показано ниже, от poohdedoo.   -  person user2872396    schedule 14.10.2013


Ответы (3)


Вместо того, чтобы создавать запрос для каждого необязательного параметра, вы также можете сделать следующее:

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

Теперь вы можете вызвать «getEmployees» с «employeeNumber» и получить конкретного сотрудника,
или вы можете вызвать «getEmployees» без «employeeNumber» и получить всех сотрудников.
(Вызов без «employeeNumber» означает опускание «employeeNumber». ' или используя 'xsi:nil="true"'.)
Очевидно, что вы не можете запросить значение 'null' таким образом.

person Erno Marks    schedule 08.05.2014

хорошо, например

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

выберите * из сотрудников

У вас есть два запроса employeeByNumberSQL, employeeByNumberSQL1, эти два сопоставлены с getemployeesByNumber и getemployeesByNumber2.

person poohdedoo    schedule 14.10.2013
comment
Вы говорите, что у вас есть 2 операции (по одной на каждый запрос) и 2 метода GET ресурсов, по одному для каждого. Это то, что вы имеете в виду? Потому что я хотел бы иметь один ресурс GET с одним входным параметром CD. Потребуется компакт-диск, если пользователь предоставил, а если нет, перечислите все, используя ресурс '‹resource method=GET path=Buildings/{CampusCd}› ‹call-query href=DefaultCampus› ‹with-param name=CampusCd query-param =CampusCd/› ‹/вызов-запрос› ‹/ресурс›' - person user2872396; 14.10.2013

Ну, вы можете сделать входные параметры необязательными, задав значения по умолчанию для входных параметров. Например

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

Здесь, если вы не укажете входные параметры, он примет входной параметр как один. Или же вам нужно создать два запроса и обрабатывать их программно

person poohdedoo    schedule 12.10.2013
comment
Кажется, мне нужно создать 2 запроса? Как я могу это сделать? У меня есть следующий параметр и ресурс. '‹имя параметра=Cd sqlType=STRING/› ‹/query› ‹имя операции=GetCd› ‹call-query href=DefaultCampus› ‹with-param name=Cd query-param=Cd/› ‹/call-query› ‹ /operation› ‹resource method=GET path=Sample/{Cd}› ‹call-query href=sample› ‹with-param name=Cd query-param=Cd/› ‹/call-query› ‹/resource› ‹/ данные>' - person user2872396; 14.10.2013
comment
Вам нужно создать два запроса: один с входным параметром Cd и другой запрос без входного параметра, который принимает все, а затем сопоставить каждый запрос с разными операциями. - person poohdedoo; 14.10.2013
comment
Ok. Я могу создать 2 запроса. Как вы сопоставляете эти 2 запроса с другой операцией? Я новичок в ДСС. Я был бы признателен за ваш пример. Спасибо. - person user2872396; 14.10.2013
comment
я приложил образец - person poohdedoo; 14.10.2013