2013-05-14 83 views
1

我有兩個字段類型爲Char 128的表單,我試圖比較這些字段的內容。但是我沒有做出適當的比較。當兩個字段具有相同的數據時,仍然表示這兩個字段不匹配。Oracle Forms 6i比較字段

Begin 

IF(LTRIM(RTRIM(:field1)) = LTRIM(RTRIM(:field2)))THEN 
Show_Message('Fields Match'); 
ELSE 
Show_Message('Fields DO NOT Match'); 
END IF; 

End; 
+1

如果將內容添加到消息中,內容如何顯示? 'Show_Message('Fields Match')'後面的分號是可選的,不是嗎? – Trinimon 2013-05-14 18:36:26

+0

我會嘗試它,讓你知道ooops我忘了分號 – devdar 2013-05-14 18:42:50

+2

在if語句之前給出來自:field1和:field2的消息。 如果字段爲空,這種比較是行不通的 – nightfox79 2013-05-14 19:55:58

回答

3

問題是因爲已經指出,在甲骨文空不等於空。在Oracle中,與NULL的比較總是錯誤的。你可以使用NVL解決這個問題,但是在這種情況下,我應該更喜歡使用IS NULL,就像這樣:

Begin 

    IF (LTRIM(RTRIM(:field1)) = LTRIM(RTRIM(:field2))) 
    OR (:field1 IS NULL AND :field2 IS NULL) THEN 
    Show_Message('Fields Match'); 

    ELSE 
    Show_Message('Fields DO NOT Match'); 

    END IF; 

End; 
2

如果表單字段爲NULL,則相等比較將不起作用。您可以使用nvl功能來代替空值

Begin 

IF(LTRIM(RTRIM(nvl(:field1,'*@#')) = LTRIM(RTRIM(nvl(:field2,'*@#'))))THEN 
Show_Message('Fields Match'); 
ELSE 
Show_Message('Fields DO NOT Match'); 
END IF; 

End;