此腳本將從以下字符串中獲取序列,年,月和日...... 然後從序列部分找到缺失的數字(如1111,1112,115,..等) 問題在於輸出這個腳本不正確不DBMS丟失號碼缺少數字腳本不會工作?
EMP-1111_14_01_01_2141_G1
EMP-1112_14_01_01_1612_G1
EMP-1115_14_01_01_1109_G1
EMP-1116_14_01_01_1315_G1
EMP-1118_14_01_01_0910_G2
EMP-1121_14_01_01_1105_G1
EMP-1111_14_01_01_1120_G2
輸出結果應該是這樣的
缺少數1113
缺少數1114
缺少數1117
缺少數1118
缺少數1119
缺少數1120
declare
v_name table1.ENAME%TYPE;
V_seq NUMBER (4);
V_Year number(2);
V_Month number (2);
V_day number (2);
max_seq number(4);
min_seq number(4);
CURSOR List_ENAME_cur IS
SELECT ENAME from table1
WHERE status = 2;
begin
FOR List_ENAME_rec IN List_ENAME_cur loop
if REGEXP_LIKE(List_ENAME_cur.ENAME,'emp[-][1-9]{4}[_][1-9]{2}[_][1-9]{2}[_][1-9]{2}[_][0-9]{4}[_][G]["1"]') then
V_seq := substr(List_ENAME_cur.ename,5,4);
V_Year := substr(List_ENAME_cur.ename,10,2);
V_Month := substr(List_ENAME_cur.ename,13,2);
V_day := substr(List_ENAME_cur.ename,16,2);
if min_seq is null or V_seq_FILENAME < min_seq then
min_seq := V_seq_FILENAME;
DBMS_OUTPUT.PUT_LINE('Missing number '||min_seq);
end if;
if max_seq is null or V_seq_FILENAME > max_seq then
max_seq := V_seq_FILENAME;
DBMS_OUTPUT.PUT_LINE('Missing number '||max_seq);
end if;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE('max_seq '||max_seq||' min_seq '||min_seq);
end;
對於這個數據集,應該是什麼樣的預期結果? – SriniV
結果應該是丟失號碼1113,1114,1117,1118,1119,1120 – user334560415
如果條件應該輸出數值,如果循環是numm我是不是? – user334560415