sql >> Databáze >  >> RDS >> Oracle

Jak mohu resetovat všechny sekvence v mé Oracle DB na hodnotu 0?

Nepotřebujete dynamické SQL.

begin
for i in (select sequence_name from dba_sequences where sequence_name like '%SEQ_PR%') LOOP
  reset_seq(i.sequence_name);           --> this is just fine
end loop;
end;
/

Příklad (používám USER_SEQUENCES místo toho):

SQL> select seq_pr1.nextval from dual;

   NEXTVAL
----------
         9

SQL> select seq_pr2.nextval from dual;

   NEXTVAL
----------
         8

SQL> begin
  2  for i in (select sequence_name from user_sequences where sequence_name like '%SEQ_PR%') LOOP
  3    reset_seq(i.sequence_name);
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> select seq_pr1.nextval from dual;

   NEXTVAL
----------
         1

SQL> select seq_pr2.nextval from dual;

   NEXTVAL
----------
         1

SQL>



  1. Nastavení a údržba replikace PostgreSQL pomocí Ansible

  2. Nelze inicializovat mrak bodů - ORA-13249:Chyba při vytváření spouštěče dml

  3. Dotaz na hodnocení skupin PHP MYSQL

  4. Při dotazu na pohled je klauzule o filtrování v definici pohledu ignorována