How Oracle implements National Language Support and supports Foreign Languages
There are thousands of languages in the world. All these languages are different in the words and syntax they use, and many of these languages use different alphabets and character sets.
As a global product, Oracle gives you the ability to support many different languages and character sets. Oracle supports language-dependent data and language-independent functions.
Once a piece of data is stored in the Oracle database, it is meant to be stored securely forever. Because of this, Oracle uses a particular character set to store the data.
This character set is responsible for creating binary representations of the data in the database. Oracle can store the characters in the database whether a language uses a relatively small alphabet that can be stored in a single byte,
like English, or a more complex representation that can use multiple bytes for each character, such as Chinese or Japanese.
Language-independent functions and support
The data in the database is different from the language used by an end user. You may have a situation where an end user wants to be able to store data in one language, yet requires the use of functions or the delivery of error messages in a different language.
Even more common is the scenario where a single database will be used by individuals who understand different languages.
Oracle allows each user to specify his or her own language preference. A single Oracle database can, for instance, deliver error messages in many different languages simultaneously.
Although the interpretation of data is fixed to a particular language, the use of that data is not. In the next lesson, you will be introduced to the parameters used to determine how Oracle handles national language characters in the runtime environment.
NLS_LENGTH_SEMANTICS enables you to create CHAR and VARCHAR2 columns using either byte or character length semantics.
Existing columns are not affected. NCHAR, NVARCHAR2, CLOB, and NCLOB columns are always character-based.
You may be required to use byte semantics in order to maintain compatibility with existing applications.
NLS_LENGTH_SEMANTICS does not apply to tables in SYS and SYSTEM. The data dictionary always uses byte semantics.