ORACLE初始化参数:NLS_LENGTH_SEMANTICS
初始化参数NLS_LENGTH_SEMANTICS用于指定CHAR列或VARCHAR2列的长度定义方式,默认值为BYTE。当设置该参数为BYTE时,定义CHAR列或VARCHAR2列采用字节长度方式;当设置该参数为CHAR时,定义CHAR列或VARCHAR2列采用字符个数方式。需要注意,设置该参数对于已存在参数没有作用。
该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET nls_length_semantics=char;
SQL>CREATE TABLE t1(cola VACHAR2(4));
SQL>INSERT INTO t1 VALUES(‘北京’);
SQL>INSERT INTO t1 VALUES(‘BEIJING’);
上例将报错ORA-12899。
附甲骨文官方说明:
属性 | 说明 |
---|---|
参数类型 | String |
语法 | NLS_LENGTH_SEMANTICS = string Example: NLS_LENGTH_SEMANTICS = 'CHAR' |
默认值 | BYTE |
允许动态修改 | ALTER SESSION |
取值范围 | BYTE | CHAR |
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.