就oracle中的類型表而言,我正在尋找varchar2類型的限制。請注意,我不是在談論一個物理表(varchar2的限制是4000),而是一個類型的表。Oracle中的表類型varchar2的限制是什麼?
謝謝
就oracle中的類型表而言,我正在尋找varchar2類型的限制。請注意,我不是在談論一個物理表(varchar2的限制是4000),而是一個類型的表。Oracle中的表類型varchar2的限制是什麼?
謝謝
這取決於上下文。一個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)
在Oracle 12c中,限制爲32'767字節。但是,它必須由Oracle參數MAX_STRING_SIZE = EXTENDED
啓用。您應該按照Oracle文檔中給出的步驟進行操作:MAX_STRING_SIZE
因此,該表只能容納4000個字節的varchar2? – gravetii
正確。除非你使用12c,否則在所有情況下限制已經擴展到32767。 –