Reino: Code Quality

Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.

Code Correctness: Erroneous Null Comparison

Abstract
As expressões x = NULL e x != NULL serão sempre false.
Explanation
No caso de PL/SQL, o valor NULL é indeterminado. Não será equivalente a nada, nem mesmo a um outro valor NULL. Além disso, um valor null nunca é equivalente a outro valor.

Exemplo 1: Esta instrução será sempre false.


checkNull BOOLEAN := x = NULL;
Exemplo 2: Esta instrução será sempre 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