我想将170个SQL序列重置为0。听说这并不容易,但是可能会出现“ hacks”,例如:
select SEQ_P_1.CURRVAL from dual;
记住该值,先说111,然后
alter sequence SEQ_P_1 increment by -111 minvalue 0;
select SEQ_P_1.NEXTVAL from dual;
alter sequence SEQ_P_1 increment by 1;
结果,序列SEQ_P_1设置为0。这对我有用!现在是我对其他169个序列的疑问。我不想键入所有内容...现在
select 'alter sequence '||sequence_name||'
minvalue 0 increment by '||
select sequence_name.CURRVAL
from dual||';'
from dba_sequences
where sequence_name like '%SEQ_P_%';
不起作用。内部选择一定出问题了。请帮忙:)我想得到170行的结果,然后将其复制粘贴到SQL Developer中,以便它执行我上面针对每行手动执行的所有4个步骤。
已解决:
我编译How do I reset a sequence in Oracle?中给出的过程 然后执行我使用的所有语句
select 'exec reset_seq('''||sequence_name||''');'
from dba_sequences
where sequence_name like '%SEQ_P_%';