Oracle的PL/SQL中的BOOLEAN类型有三个取值,分别是TRUE、FALSE以及NULL。这三个值会给开发的时候造成不必要的麻烦,例如
DECLARE
B_FLAG_TRUE BOOLEAN := TRUE;
B_FLAG_FALSE BOOLEAN := FALSE;
B_FLAG_NULL BOOLEAN :=NULL;
BEGIN
IF (B_FLAG_NULL AND B_FLAG_TRUE) THEN
DBMS_OUTPUT.PUT_LINE('NULL AND TRUE');
END IF;
IF NOT (B_FLAG_NULL AND B_FLAG_TRUE) THEN
DBMS_OUTPUT.PUT_LINE('NOT (NULL AND TRUE)');
END IF;
END;
上面的两个判断,均没有输出字符,因此,我们需要看一下问题出在什么地方:
DECLARE
B_FLAG_TRUE BOOLEAN := TRUE;
B_FLAG_FALSE BOOLEAN := FALSE;
B_FLAG_NULL BOOLEAN :=NULL;
B_FLAG_RESULT BOOLEAN;
FUNCTION TSBOOLEAN (B_FLAG BOOLEAN)RETURN VARCHAR2 IS
BEGIN
RETURN CASE B_FLAG
WHEN TRUE THEN 'TRUE'
WHEN FALSE THEN 'FALSE'
ELSE 'NULL'
END;
END TSBOOLEA