0

私はいくつかの PL/SQL ドキュメントを読んでいましたがNULL、PL/SQL では不確定であることがわかりました。

言い換えると:

x := 5;
y := NULL;
...
IF x != y THEN  -- yields NULL, not TRUE
   sequence_of_statements;  -- not executed
END IF;

y の値が不明であり、したがって の場合も不明であるため、このステートメントは true と評価されませんx != y

上記の事実と、PL/SQLでこれを処理する方法以外の情報はあまり見つかりません。私が知りたいのは、このようなものがいつ役立つかということです。

4

2 に答える 2

3

これは 3 つの値を持つロジックです。http://en.wikipedia.org/wiki/Three-valued_logic を参照てください。また、SQL に固有の場合はhttp://en.wikipedia.org/wiki/Null_(SQL)を参照してください。

これは、値が意味する概念に従いますNULL。この値は現在不明であり、将来何かで満たされる可能性があります。したがって、動作は、将来の非 null 値のすべてのケースで正しい方法で定義されます。例)true or unknowntrueであり、unknown( の真値NULL) が後で真または偽に置き換えられても、結果は になりますtrue。ただし、true and unknownis は、 unknown` が後で何か false に置き換えられたunknown場合に結果が true になるためです。unknown will later be replaced by a true value, while it will be false, if the

最後に、この動作は「非決定論的」ではありません。結果は明確に定義されており、各実行で同じ結果が得られるためです。これは定義上決定論的です。これは、他のほとんどのプログラミング言語で使用される標準のブール型の 2 値論理よりも少し複雑な方法で定義されています。非決定論的な関数はdbms_random.random、呼び出されるたびに異なる値を返すため、または でありSYSTIMESTAMP、複数回呼び出された場合にも異なる値を返します。

于 2013-08-29T15:47:56.023 に答える