如何将许多SQL序列值重置为0?

时间:2019-01-30 14:20:50

标签: sql oracle sequence reset

我想将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_%';

0 个答案:

没有答案