Chúng tôi có thể kiểm tra điều này trong SQLPlus để xem điều gì xảy ra trong từng trường hợp trong số 3 trường hợp (true, false, null):
set serveroutput on
declare
true_value boolean := true;
false_value boolean := false;
null_value boolean;
begin
if not true_value then --Should not pass
dbms_output.put_line('True Value');
end if;
if not false_value then --Should pass
dbms_output.put_line('False Value');
end if;
if null_value is null then --Just to make sure it is null
dbms_output.put_line('Null Value is Null');
end if;
if not null_value then --Should not pass
dbms_output.put_line('Null Value');
end if;
end;
/
Sản xuất:
SQL> set serveroutput on
SQL>
SQL> declare
2 true_value boolean := true;
3 false_value boolean := false;
4 null_value boolean;
5 begin
6
7 if not true_value then --Should not pass
8 dbms_output.put_line('True Value');
9 end if;
10
11 if not false_value then --Should pass
12 dbms_output.put_line('False Value');
13 end if;
14
15 if null_value is null then --Just to make sure it is null
16 dbms_output.put_line('Null Value is Null');
17 end if;
18
19 if not null_value then --Should not pass
20 dbms_output.put_line('Null Value');
21 end if;
22 end;
23 /
False Value
Null Value is Null
PL/SQL procedure successfully completed.
SQL>
Vì vậy, đường dẫn mã khả thi duy nhất có thể tạo ra kết quả mong đợi của bạn là nếu giá trị đi vào điều kiện là sai. Nếu đó không phải là những gì bạn đang thấy hoặc mong đợi thì chắc chắn có điều gì đó khác đang xảy ra trong quy trình của bạn hoặc là một tác dụng phụ.