在Oracle DB 12.2中,当nls_length_semantics
为CHAR
时,我们可以创建一个包含默认值的列的表,如下所示:
REFERENCE_NO VARCHAR2(40) default
TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE@!,'YYDDD')))||'RR'||LPAD(TO_CHAR(SEQ_T.NEXTVAL),9,'0') not null
但当nls_length_semantics
为BYTE
时,上面的列创建错误:
" ORA-01401插入的值对于列"来说太大了。
当我们尝试将列长度设为80而不是40时,此问题就会解决。有人可以告诉我这里nls_length_semantics
的重要性。
注意:无论nls_length_semantics
值如何,表格列创建在Oracle DB 12.1中都可正常使用16。