Я пытаюсь продвигать последовательность отрицательного числом, но я получаю следующее сообщение об ошибке:Alter последовательность .nextval в Oracle SQL 11 с подготовленным заявлением
ORA-02286: no options specified for ALTER SEQUENCE
До сих пор никакого количества Googling не помогло. Заявление, которое я использую, является
ALTER SEQUENCE %s.nextval INCREMENT BY ?
Имя последовательности, как правило, schema.table_name_seq
. Включение имени схемы неизбежно, потому что соединение не обязательно относится к одному и тому же.
Добавление несущественного варианта, такого как minvalue 1
, не помогло.
Моя вторая попытка была уронить .nextval
из запроса и запустить ALTER
непосредственно на последовательность (просто бросали вещи на стене, чтобы увидеть, что торчит в этой точке), то есть:
ALTER SEQUENCE %s INCREMENT BY ?
что приводит к
ORA-01722: invalid number
Далее я поставил положительное целое число и отклонил его в запросе (INCREMENT BY -?
), который произвел ту же ошибку. Запрос получен, как, например:
num = -1 * Math.abs(num);
stmt = conn.prepareStatement(sql);
stmt.setLong(1, num); //also tried setInt()
stmt.execute();
Идея заключается в том, чтобы установить последовательность .nextval
для данной таблицы обратно на произвольное число (но всегда больше, чем minval
). Комментарий
'alter sequence' - это DDL. Вы не можете использовать переменные связывания в DDL. Вам нужно будет динамически построить инструкцию DDL, которую вы хотите, и выполнить ее, и не имеет смысла использовать 'PreparedStatement' для этого. –