26. 11. 2020

Oracle - pretáčanie sequencera

Sequencer v Oracle databázach je vlastne číselná premenná ktorej hodnota sa vyčítaním posunie. Dá sa tak použiť ako nejaký generátor poradových čísel a pod. Používateľ vidí nastavenie sequencerov v user_sequences tabuľke.

select sekvencer1.nextval from dual;  -- takto vycitam novu hodnotu
select sekvencer1.currval from dual;  -- naposledy vycitana (bez posunutia)

alter sequence sekvencer1 increment by -1;  -- v pripade omylu sekvencer vratim
select sekvencer1.nextval from dual;
alter sequence sekvencer1 increment by 1;

declare                            -- posunutie aktualnej hodnoty
ciel CONSTANT NUMBER := 100;
akt NUMBER := 32;
begin
  while akt < ciel loop
    select sekvencer1.nextval into akt from dual;
  end loop;
end;
/