выполнить немедленное изменение последовательности не работает
Я застрял на этом довольно простом сценарии. Это не работает, как я ожидаю.
declare
st VARCHAR(1024);
begin
for x in (SELECT sequence_name FROM USER_SEQUENCES) loop
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1000';
execute immediate st;
st := 'select ' || x.sequence_name || '.nextval from dual';
execute immediate st;
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1';
execute immediate st;
end loop;
end;
/
Когда я запускаю это, это, кажется, не работает вообще - все мои последовательности просто остаются, как они есть, и они не были увеличены на тысячу динамическими утверждениями. Если я проверюnextval
до и после анонимного блока разница всего 1, а не 1001.
Если я заменюexecute immediate
сdbms_output.put_line
и выполнить сгенерированные команды вручную, последовательности меняются, как я хочу.
Чего мне не хватает?