sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag återställa alla sekvenser i min Oracle DB till värdet 0?

Du behöver inte dynamisk 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;
/

Exempel (jag använder USER_SEQUENCES istället):

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. Kontrollera om det finns kompletta dubbletter av rader i en stor tabell

  2. mysql_num_rows() förväntar sig att parameter 1 är resurs, boolesk given

  3. ORA-00911:ogiltigt tecken Padda

  4. Vilka är mer presterande, CTE eller temporära tabeller?