Процедура pl sql, чтобы взять максимум столбца и увеличить его на 1 - PullRequest
1 голос
/ 02 мая 2020

У меня есть требование к таблице ниже, где мне нужно обновить таблицу столбцами 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;
...