0
我在PLSQL中有以下代碼。 我不確定爲什麼IF語句沒有被解僱。 curr_app和the_app變量是不同的,但if語句內的dbms outoutput永遠不會被觸發。我的IF語句無法檢測可區分的差異
DECLARE
the_app VARCHAR2(200);
curr_app VARCHAR2(200);
BEGIN
the_app :='';
curr_app :='';
FOR i IN
(SELECT APP_NAME,CONTACT_TYPE,CONTACT_DEPT,CONTACT_VALUE
FROM CMSv2.CMS_APPLICATIONS CMSA
LEFT JOIN CMSV2.CMS_APP_CONTACTS CMSAC
ON CMSa.APP_NAME = CMSAC.CONTACT_APP and (CMSAC.END_DT IS NULL and CMSAC.RET_DT IS NULL)
WHERE CMSA.END_DT IS NULL
AND CMSA.RET_DT IS NULL ORDER BY APP_NAME
)
LOOP
curr_app := i.APP_NAME;
dbms_output.put_line('curr_app' || curr_app);
dbms_output.put_line('the_app' || the_app);
IF the_app<>curr_app THEN
dbms_output.put_line('doservers for' || i.APP_NAME);
END IF;
dbms_output.put_line(i.APP_NAME);
END LOOP;
END;
當''''被分配給一個變量時,它變成一個零長度的字符串。 Oracle將零長度字符串視爲NULL。任何與NULL結果比較的結果都是UNKNOWN。這就是爲什麼,在你的情況下,'如果'情況永遠不會'真實'。 –
僅供參考 - 您可以在聲明變量時初始化變量,如下所示:'the_app VARCHAR2(200):='';' –