Я не думаю, что ответ от Винсента Малграта является правильным.Когда NVARCHAR2
был введен давным-давно, никто даже не говорил о Unicode.
Изначально Oracle предоставил VARCHAR2
и NVARCHAR2
для поддержки локализации.Общие данные (включая PL / SQL) хранились в VARCHAR2
, скорее всего US7ASCII
в эти дни.Тогда вы можете применить NLS_NCHAR_CHARACTERSET
индивидуально (например, WE8ISO8859P1
) для каждого вашего клиента в любой стране, не затрагивая общую часть вашего приложения.
В настоящее время набор символов AL32UTF8
является значением по умолчанию, которое полностью поддерживает Unicode.,На мой взгляд, сегодня больше нет причин использовать NLS_NCHAR_CHARACTERSET
, то есть NVARCHAR2
, NCHAR2
, NCLOB
.Возможно, единственная причина в том, что вы должны поддерживать в основном азиатские символы, где AL16UTF16
потребляет меньше памяти по сравнению с AL32UTF8
.