2012-01-12 3 views
1

JDBC Есть ли способ, чтобы удалить кучу элементов с помощью «где ... в» в SQL, например, так:Использования «где» весна-

HashSet<String> idStrings = ...; 
SimpleJdbcTemplate template = getTemplate(); 
template.update("DELETE FROM records WHERE idstring IN (?)", idStrings); 

Я пытаюсь получить некоторые старые код для работы, который использует этот метод, но всякий раз, когда я пытаюсь запустить его, драйверы JDBC Oracle вызывают исключение:

Состояние QL [99999]; код ошибки [17004]; Недопустимый тип столбца; вложенное исключение java.sql.SQLException: Неверный тип столбца

Это с ojdbc5 11.2.0.1.0 и весной-3.0.3

JDBC
+1

Возможный дубликат [Как сгенерировать динамический "в (...)" sql-список через Spring JdbcTemplate?] (Http://stackoverflow.com/questions/1981683/how-to-generate-a-dynamic- in-sql-list-through-spring-jdbctemplate) – axtavt

ответ

1

Это возможно, но требуется один заполнитель (?) в ID, и каждый идентификатор должен быть связан отдельно.

Вы можете также использовать NamedParameterJdbcTemplate, который

[...] также позволяет расширять список значений для соответствующего числа заполнителей.

Будьте осторожны, чтобы не устанавливать слишком много значений в набор идентификаторов. Например, Oracle ограничивает их до 1000.

+1

Это не сработало для меня. Я получил java.sql.SQLException: недопустимый тип столбца. Есть идеи? – Trevor