2017-02-16 13 views
1

Я хотел бы сгенерировать запрос, который будет получен для BeneficiaryID 'ABC123' вместе с некоторыми другими входами, если они также были предоставлены. Предположим, что если указано значение валюты, я хотел бы включить условие Currency также в запрос JOIN, а также категорию. У меня есть следующий фрагмент кода в скрипте SOAP UI Groovy .Динамический переменный параметр в статическом запросе mysql с использованием groovy soap ui

query= " CORR.BeneficiaryID LIKE 'ABC123'" 
    if (currencyValue!=""){ 
    query=query + " and CORR.Currency LIKE '${currencyValue}'" 
    } 
    if (CategoryValue!=""){ 
    query=query + " and CORR.Category LIKE '${CategoryValue}'" 
    } 
    log.info("Query" + query) 

    Outputrows = sql.rows("select CORR.Preferred as preferred ,CORR.Category as category,CORR.Currency as currency\ 
    from BENEFICIARY CORR \ 
    JOIN LOCATION LOC on CORR.UID=LOC.UID and ${query} 

    log.info("Output rows size" + Outputrows.size()) 

Когда валюта и категории не дают, я хотел бы иметь следующий запуск запроса и получить мне результаты.

select CORR.Preferred as preferred ,CORR.Category as category,CORR.Currency as currency\ 
from BENEFICIARY CORR \ 
JOIN LOCATION LOC on CORR.UID=LOC.UID and CORR.BeneficiaryID LIKE 'ABC123' 

и когда валюта и категории приведены (скажем, USD & Commercial), то следующий запрос.

select CORR.Preferred as preferred ,CORR.Category as category,CORR.Currency as currency\ 
from BENEFICIARY CORR \ 
JOIN LOCATION LOC on CORR.UID=LOC.UID and CORR.BeneficiaryID LIKE 'ABC123' and CORR.Currency LIKE 'USD' and CORR.Category LIKE 'Commercial' 

Все, что я мог видеть на результат для Outputrows.size() равен нулю (0).

Не могли бы вы исправить меня, где я делаю неправильно.

Спасибо.

ответ

0

Здесь изменен скрипт.

Поскольку проблема заключается в том, чтобы просто построить запрос, только удаление этой части удаляет sql, поскольку это не проблема.

//Define the values or remove if you get those value from somewhere else 
//Just put them here to demonstrate 
//You may also try by empty value to make sure you are getting the right query 
def currencyValue = 'USD' 
def categoryValue = 'Commercial' 
def query = 'select CORR.Preferred as preferred, CORR.Category as category,CORR.Currency as currency from BENEFICIARY CORR JOIN LOCATION LOC on CORR.UID = LOC.UID and CORR.BeneficiaryID LIKE \'ABC123\'' 
currencyValue ? (query += " and CORR.Currency LIKE '${currencyValue}'") : query 
categoryValue ? (query += " and CORR.Category LIKE '${categoryValue}'") : query 
log.info "Final query is \n ${query}" 

Вы можете просто передать query в дальнейшем, когда вам нужно запустить SQL, скажем sql.rows(query)

Вы можете быстро попробовать Demo

+0

спасибо Рао .. это работает, как я намеревался его быть. – Y5288

 Смежные вопросы

  • Нет связанных вопросов^_^