G-2340: Always define your VARCHAR2 variables using CHAR SEMANTIC (if not defined anchored).
Minor
Reliability
Reason
Changes to NLS_LENGTH_SEMANTICS
will only be picked up by your code after a recompilation.
In a multibyte environment a VARCHAR2(50)
definition may not necessarily hold 50 characters, when multibyte characters a part of the value that should be stored unless the definition was done using the char semantic.
Additionally, business users never say last names should be 50 bytes in length.
Example (bad)
1 2 3 4 | create or replace package types is subtype description_type is varchar2(200); end types; / |
Example (good)
1 2 3 4 | create or replace package types is subtype description_type is varchar2(200 char); end types; / |