を私たちが真(3つの各状況で何が起こるか見るためにSQLPlusをでこれをテストすることができます、偽、ヌル):生成
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;
/
:
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>
想定される出力を生成できる唯一のコードパスは、条件に入る値がfalseの場合です。それがあなたが見ているか期待しているものでないなら、あなたの処置で、あるいは副作用として何かが起こっているはずです。
[フレンドリーリマインダ]あなたは経験豊かなユーザーとして、回答を受け入れることを忘れてしまったと思います(dcpまたはJeffrey's)。 –
@AlexanderMalakhov:私はいくつかの機会に答えを受け入れたいと思っていますが、コードが正しく動作しているように見えるので、質問は答えられないようです。私が間違っていない限り、 'is_viewable = FALSE'は' TRUE'か '' is_viewable''のいずれかに評価されるのに対し、 'NOT is_viewable'は**常に** FALSE(' is_viewable'の値にかかわらず) 'is_viewable'の値に応じて' FALSE'を返します。問題が発生しなくなったので、私は答えを確認することはできません。 :( –
私は似ていた(wrt "正解無し、検証できない")[質問](http://stackoverflow.com/questions/2233856/oracle-forms-6i-crashes-with-0xc0000005-at私の質問に答えてくれる人はほとんどいないので、私は(最も正しい)回答を受け入れることにしました。私の戦略に従わない人はまったく問題はありません(あなたがSOコミュニティのためにすばらしい仕事をしているので、それ以上です) –