结合字符语义的Oracle扩展数据类型

结合字符语义的Oracle扩展数据类型,oracle,oracle12c,Oracle,Oracle12c,Oracle 12引入的扩展数据类型有一个方面我不太了解。文件()说: 声明大小大于4000字节的VARCHAR2或NVARCHAR2数据类型,或声明大小大于2000字节的原始数据类型是扩展数据类型。利用Oracle的LOB技术,扩展数据类型列的存储方式不一致 根据这一定义,“VARCHAR2(4000 CHAR)”是否具有“大于4000字节的声明大小”,因为使用多字节字符集(例如ALS32UTF8),它可能包含超过4000字节 或者更具体地说:当我创建这种类型的列时会发生什么?我可以想到以下可

Oracle 12引入的扩展数据类型有一个方面我不太了解。文件()说:

声明大小大于4000字节的VARCHAR2或NVARCHAR2数据类型,或声明大小大于2000字节的原始数据类型是扩展数据类型。利用Oracle的LOB技术,扩展数据类型列的存储方式不一致

根据这一定义,“VARCHAR2(4000 CHAR)”是否具有“大于4000字节的声明大小”,因为使用多字节字符集(例如ALS32UTF8),它可能包含超过4000字节

或者更具体地说:当我创建这种类型的列时会发生什么?我可以想到以下可能性:

  • 它是使用扩展数据类型创建的,因此该列的内容始终存储在CLOB中,而不管其大小
  • 如果该列的值不需要超过4000字节,则以内联方式存储;如果该列的值较长,则以CLOB的形式存储
  • 它将拒绝存储任何超过4000字节的值。为了避免这种情况,我必须将该列声明为VARCHAR2(4001 CHAR)或类似的内容

  • 编辑:几个星期以来,这个问题一直被标记为的副本,但我认为不是。另一个问题通常是关于如何在VARCHAR2列中输入超过4000个字符,但我要问的是一个关于边缘大小写的非常具体的问题。

    “声明的大小大于4000字节”-不,不是。即使您指定
    4000字符
    ,它仍然被限制为4000字节。因此3)将发生(但除非在中启用扩展字符串类型,否则无法指定
    4001 Char
    )12c@a_horse_with_no_name:我知道,如果未启用扩展数据类型,我通常只能使用4000字节。我想更好地了解Oracle在启用扩展数据类型时的行为。