Oracle中的Type of Table中varchar2的限制是什么?

时间:2014-01-16 05:42:05

标签: oracle oracle11g oracle10g

我正在寻找varchar2类型的限制,就oracle中的类型表而言。请注意,我不是在谈论物理表(varchar2的限制为4000),而是一个类型的表。

由于

2 个答案:

答案 0 :(得分:5)

这取决于具体情况。 VARCHAR2(32767)的表可以在任何地方创建。但32767只能用于PL / SQL。 SQL中的限制仍然是4000。

SQL> --#1: SQL, 4000.
SQL> create or replace type varchar2_limit is table of varchar2(4000);
  2  /

Type created.

SQL> create table varchar2_limit_table1
  2  (
  3     a varchar2_limit
  4  ) nested table a store as my_nt;

Table created.

SQL> --#2: SQL, 4001.
SQL> drop table varchar2_limit_table1;

Table dropped.

SQL> create or replace type varchar2_limit is table of varchar2(4001);
  2  /

Type created.

SQL> create table varchar2_limit_table2
  2  (
  3     a varchar2_limit
  4  ) nested table a store as my_nt;
create table varchar2_limit_table2
*
ERROR at line 1:
ORA-02320: failure in creating storage table for nested table column A
ORA-00910: specified length too long for its datatype


SQL> --#3: PL/SQL, 32767.
SQL> declare
  2     type varchar2_limit is table of varchar2(32767);
  3  begin
  4     null;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> --#4: PL/SQL, 32768
SQL> declare
  2     type varchar2_limit is table of varchar2(32768);
  3  begin
  4     null;
  5  end;
  6  /
        type varchar2_limit is table of varchar2(32768);
                                                 *
ERROR at line 2:
ORA-06550: line 2, column 43:
PLS-00215: String length constraints must be in range (1 .. 32767)

答案 1 :(得分:1)

在Oracle 12c中,限制为32'767字节。但是,它必须由Oracle参数MAX_STRING_SIZE = EXTENDED启用。您应该遵循Oracle文档中给出的过程:MAX_STRING_SIZE