界: Code Quality

コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。

Code Correctness: Erroneous Null Comparison

Abstract
x = NULL および x != NULL は常に false となります。
Explanation
PL/SQL では、NULL の値は確定できません。どのような値とも等しくならず、別の NULL 値と同じになることもありません。また、null 値が他の値と同じになることはありません。

例 1: 以下のステートメントは必ず false になります。


checkNull BOOLEAN := x = NULL;
例 2: 以下のステートメントは必ず false になります。


checkNotNull BOOLEAN := x != NULL;
References
[1] Steven Feuerstein Oracle PL/SQL Best Practices O'Reilly
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 1
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 3
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 1
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 480
desc.structural.sql.code_correctness_erroneous_null_comparison_plsql