Я пытаюсь сделать оператор in
со значениями из БД, а затем использовать их в другом запросе. БД - Oracle
Пример:
Я уже довольно долго бьюсь об этом. Мне нужна помощь:
Groovy код:
def myList = []
def myQuery = "select USER_ID from USER_TABLE where rownum < 3"
println myQuery
sql_dw.eachRow(myQuery) {
myList.add("'"+it.USER_ID+"'")
}
println myList
myQuery = "select * from USER_TABLE where USER_ID in (${myList.join(",")})"
println myQuery
def myRow = sql_dw.firstRow(myQuery);
if (myRow == null)
println "OMG its null!!"
Вывод:
select USER_ID from eiv.USER_TABLE where rownum < 3
['5xsubmit', 'A10165']
select * from USER_TABLE where USER_ID in ('5xsubmit','A10165')
OMG its null!!
Я не знаю, что может быть причиной этого!
Все работает нормально, если я заполню myList
жестко закодированными значениями, такими как
def myList = ["'5xsubmit'", "'A10165'"]
Кроме того, копирование вставки запроса возвращает результат в БД !!
Обновление
После поиска в Google, нашел эту ссылку Получается, что мы должны использовать подготовленные утверждения. Будем исследовать, как изменить код соответственно.