0
我有這段代碼嵌入在我的sql中。出於某種原因,每當我最後一個ELSE塊被執行時,我都會看到。這裏是我的代碼:PL SQL IF-THEN-ELSE塊
IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_1),
'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
V_DEPT_N := V_TEMP_DEPT_1;
V_ADDR_LINE1:= NULL;
ELSE
IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_2),
'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
V_DEPT_N := V_TEMP_DEPT_2;
V_ADDR_LINE2:= NULL;
ELSE
IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_3),
'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
V_DEPT_N := V_TEMP_DEPT_3;
V_ADDR_LINE3:= NULL;
ELSE
IF REGEXP_LIKE (UPPER(V_TEMP_DEPT_4),
'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG|FAC|AMU|LAB|WING|
UNIT|SERV|AFT|CENT|CLIN|KLIN|ETHICS COM|EC|IRB') THEN
V_DEPT_N := V_TEMP_DEPT_4;
V_ADDR_LINE4:= NULL;
ELSE
-- The below line always gets executed.
V_DEPT_N:= NULL;
END IF;
END IF;
END IF;
END IF;
任何想法,我究竟做錯了什麼?
什麼在'V_TEMP_DEPT_ <<1-4>>'?這些變量中至少有一個是否有價值,您認爲應該與正則表達式匹配?您是否已經根據此數據分別測試了正則表達式,以驗證正則表達式是否與您認爲應匹配的內容相符? –
是的,我做了測試,它的工作正常。順便說一句,這整個代碼是在一個循環內。你想讓我把整個代碼放在這裏嗎?它像130行... – Bytekoder
您可以發佈的最有用的東西是您可以創建的最簡單的測試用例,它演示了我們可以在本地系統上運行的問題。你需要循環來證明問題嗎?如果是這樣,請包括它。如果不是這樣,當你把測試用例放在一起時就把它排除掉。你是否需要所有4條IF語句來證明這個問題?如果是這樣,則包括全部4.如果不是,則只發布1或2,或者任何表示問題的最小數量的「IF」語句。 –