Wenn man einfach nur "IF A = B THEN" schreibt, dann ist das keine Lösung. Falls eine der Variablen NULL ist, dann wird das Ergebnis des Ausdrucks ebenfalls NULL und das IF-Statement interpretiert dies als FALSE. Man benötigt also eine andere Vorgehensweise:
FUNCTION Equal (P_String1 IN VARCHAR2,
P_String2 IN VARCHAR2) RETURN BOOLEAN IS
BEGIN
IF P_String1 = P_String2
OR (P_String1 IS NULL AND P_String2 IS NULL) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END IF;
END;
FUNCTION UnEqual (P_String1 IN VARCHAR2,
P_String2 IN VARCHAR2) RETURN BOOLEAN IS
BEGIN
IF P_String1 != P_String2
OR ( P_String1 IS NULL
AND P_String2 IS NOT NULL)
OR ( P_String1 IS NOT NULL
AND P_String2 IS NULL) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END IF;
END;
Nun kann man Equal und UnEqual sehr einfach benutzen:
IF UnEqual (Var1, Var2) THEN
-- do something
ELSE
-- do something different
END IF;
versuch's
Keine Kommentare:
Kommentar veröffentlichen