как использовать пользовательскую функцию в инструкции Oracle для каждого значения одного столбца с помощью Scala

#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, а затем использовать ее в запросе. Это может быть решением.