2013-12-18 4 views
0

Этот код:Передача списка идентификаторов SQL Заявление

ids = "1245, 4526, 7689, 8001"; 
jdbcTemplate.update("DELETE FROM my_table WHERE id IN (?)", new Object[] { ids }); 

бросает следующее исключение:

(...) вложен исключение является java.sql.SQLSyntaxErrorException: ORA-01722: недопустимый номер

Как передать список идентификаторов в вышеуказанный оператор sql?

+1

Не уверен, что тип jdbcTemplate в вашем случае, но вы можете проверить это. http://stackoverflow.com/questions/1305240/how-to-set-list-of-parameters-on-prepared-statement –

+0

Заполнитель - это одно значение, а не список значений. –

ответ

1

Ваш запрос неверен. Вы не можете передать список в одиночный аргумент.

Попробуйте это.

jdbcTemplate.update("DELETE FROM my_table WHERE id IN (?,?,?,?)", new Object[] { 1245, 4526, 7689, 8001}); 
+0

Первый не работает, заполнитель является единственным значением, а не списком, если только шаблон JDBC (или конкретный драйвер) не делает некоторую магию. –

+0

Юп, поэтому я меняю свой ответ. –

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