両方のalter sequence
ステートメントは機能していますが、その間の増分は発生していません。 nextval
selectステートメントが出力をどこにも送信していないため、ループ内の呼び出しは評価されていません。 ドキュメント
から 、あなたがしていることを正確に参照しているメモ:
したがって、その値を何かに選択する必要があります:
declare
st VARCHAR(1024);
val number;
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 into val;
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1';
execute immediate st;
end loop;
end;
/
val
を追加しました 変数、およびinto val
2番目の句は即時実行します。
現在機能していることを示すには:
create sequence s42;
Sequence s42 created.
declare
st VARCHAR(1024);
n number;
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 into n;
st := 'ALTER SEQUENCE ' || x.sequence_name || ' INCREMENT BY 1';
execute immediate st;
end loop;
end;
/
anonymous block completed
select s42.nextval from dual;
NEXTVAL
----------
1001
into
なし 条項、これはあなたが見ているものである1001ではなく1で戻ってきました。