#oracle #scala
Вопрос:
У меня есть функция Scala. Мне нужно прочитать записи, в которых два последних символа столбца идентификатора равны результату func
. Итак, я должен использовать func
в запросе Oracle, который находится в следующем:
def func(id:String): Int = {
val two_char = id.takeRight(2).toInt
val group_id = two_char % 4
return group_id
}
val query = """ SELECT * FROM table where """ func("ID") """===""" group_id
Когда Scala запускает запрос, я получаю эту ошибку:
Exception in thread "main" java.lang.NumberFormatException: For input string: "ID"
func
передайте имя столбца, а не его значения. Не могли бы вы объяснить мне, как использовать функцию в запросе Oracle для работы с каждым значением столбца?
Любая помощь действительно ценится.
Комментарии:
1. Проблема в вашей
func
логике."ID".takeRight(2).toInt
создает исключение, так как «идентификатор» не является числом, поэтому он не может преобразовать его в Int. Какова цель func?? Пожалуйста, сообщите нам об этом более подробно.2. Уважаемый @gianluca aguzzi, спасибо вам за ваши отзывы. Я обновляю свой вопрос; пожалуйста, посмотрите его.
3. @M_Gh, у вас есть способ распечатать
scala
запрос перед его выполнением ?4. @RobertoHernandez, я не могу распечатать запрос. С тех пор я получаю ошибку именно при выполнении запроса.
5. @M_Gh , я просто предположил, так как я не знаю Scala. вы можете использовать функцию в Oracle, а затем использовать ее в запросе. Это может быть решением.