Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да нулирам всички последователности в моята Oracle DB на стойност 0?

Нямате нужда от динамичен 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;
/

Пример (използвам USER_SEQUENCES вместо това):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на JPA и 1000 ID в Oracle IN Operator

  2. АКТУАЛИЗИРАНЕ на INSERT дублиран първичен ключ в Oracle?

  3. Функция ABS() в Oracle

  4. Какъв е максималният размер на VARCHAR2 в PL/SQL и SQL?

  5. Функцията CURRENT_TIMESTAMP на Oracle наистина ли е функция?