выполнить немедленное изменение последовательности не работает

Я застрял на этом довольно простом сценарии. Это не работает, как я ожидаю.

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 и выполнить сгенерированные команды вручную, последовательности меняются, как я хочу.

Чего мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос