Создать категориальную переменную для пакетной обработки в Oracle

#oracle #oracle12c

#Oracle #oracle12c

Вопрос:

Я хочу создать новый столбец в моей таблице, который содержит значение 1 для первых 100 000 строк, 2 для следующих 100 000 строк и так далее.
Это необходимо (или я так думаю), потому что сервер, на котором запущен Oracle, прерывает все запросы через 30 минут, и я знаю, что с запросом, который я хочу выполнить, 100,00 записей находятся на безопасной стороне для обработки.
Я просмотрел CREATE SEQUENCE, но это не то, что мне нужно.
Что у меня пока есть:

 ALTER TABLE mytable ADD (new_colNUMBER(3,0));  
UPDATE SET new_col = ...
  

Я также открыт для предложений о том, как решить эту проблему под другим углом.

РЕДАКТИРОВАТЬ Моя версия Oracle — 12c Enterprise.

Комментарии:

1. Вам определенно следует выяснить, почему ваше пакетное задание прерывается, и исправить это, а не добавлять бессмысленный столбец в вашу таблицу.

Ответ №1:

Поскольку ваша DBMS версия является 12c , вы можете добавить существующую последовательность как default с not null опцией ограничения, чтобы заполнить начальные значения и предоставить новые значения для предстоящих записей

 alter table mytable 
add new_col integer 
default seq_odeme.nextval not null;