By definition, TRUE is greater than FALSE. Any comparison with NULL returns NULL.
SQL> SQL> CREATE OR REPLACE PROCEDURE print_boolean ( 2 b_name VARCHAR2,-- ww w . j av a2 s . c om 3 b_value BOOLEAN 4 ) IS 5 BEGIN 6 IF b_value IS NULL THEN 7 DBMS_OUTPUT.PUT_LINE (b_name || ' = NULL'); 8 ELSIF b_value = TRUE THEN 9 DBMS_OUTPUT.PUT_LINE (b_name || ' = TRUE'); 10 ELSE 11 DBMS_OUTPUT.PUT_LINE (b_name || ' = FALSE'); 12 END IF; 13 END; 14 / Procedure created. SQL> BEGIN 2 print_boolean ('TRUE > TRUE', TRUE > TRUE); 3 print_boolean ('TRUE > FALSE', TRUE > FALSE); 4 print_boolean ('TRUE > NULL', TRUE > NULL); 5 6 END; 7 / TRUE > TRUE = FALSE TRUE > FALSE = TRUE TRUE > NULL = NULL PL/SQL procedure successfully completed. SQL>