У меня есть требование к таблице ниже, где мне нужно обновить таблицу столбцами SFX и SEQ, так как сначала мне нужно взять максимум SEQ, а когда его значение достигает 99, мне нужно сделать значение столбца SFX равным 02, а SEQ - 01. Пожалуйста, помогите мне с процедурой PL sql и обновите в ней команды для достижения этой цели.
Вывод на данный момент
PROV_NTWK PDF_PID LOC SFX SEQ
MGCN 100 2 01 01
MGCN 100 3 01 02
MGCN 100 23 01 99
MGCN 100 21 01 01
MGCN 50 1 01 02
Ожидаемый вывод:
PROV_NTWK PDF_PID LOC SFX SEQ
MGCN 100 2 01 01
MGCN 100 3 01 02
MGCN 100 23 01 99
MGCN 100 21 02 01
MGCN 50 1 01 01
**** Я написал ниже процедуру, но она просто присваивает максимальное значение столбцу SEQ и не увеличивает его: ****
CREATE OR REPLACE PROCEDURE trying(SEQ varchar2,SFX varchar2)
IS
v_seq PDF_PROV.SEQ%TYPE;
v_sfx PDF_PROV.SFX%TYPE;
v_max_value number;
CURSOR HELLO IS select SEQ,SFX FROM PDF_PROV;
BEGIN
OPEN HELLO;
LOOP
FETCH HELLO INTO v_seq,v_sfx;
EXIT WHEN HELLO%NOTFOUND;
UPDATE PDF_PROV SET seq=(select max(v_seq)+1 from PDF_PROV),sfx='01';
v_max_value:=seq;
if v_max_value ='99' then
reset_sequence('hr_seq');
UPDATE PDF_PROV SET seq='hr_seq.currval',sfx='hr_seq.nextval';
end if;
END LOOP;
CLOSE HELLO;
END;