2012-04-13 43 views
1

私はそれでCLOBでテーブルを作成すると、CLOB列が4000のDATA_LENGTHを有することが報告されていますOracleのCLOB型でALL_TAB_COLS.DATA_LENGTH = 4000を解釈する方法は?

create table test (
    data clob 
); 

-- Returns 4000 
select data_length from all_tab_cols 
where table_name = 'TEST'; 

は、どのように私はそれを解釈することができますか? VARCHAR2の制限も4000であると考えて、後方互換性がありますか?または、これは長さ4000の文字列リテラルの挿入/更新しかできないことを示していますか?この動作はSYS.ALL_TAB_COLSのどこかに記録されていますか?

+0

説明についてはこの回答を参照してください。http://stackoverflow.com/a/7211606/409172 –

+0

@jonearles:をありがとうヒント。それは物事をさらに混乱させます。私は、単に論理的な(すなわち非ストレージ関連の)目的のために、私は 'CLOB'カラムの' DATA_LENGTH'を無視することができると思います... –

答えて

3

最大4000バイトを表領域にインラインで格納できます。 CLOBの長さが4000バイトを超える場合は、特殊機能を使用してLOB記憶域に格納/読込みする必要があります。

参照:

+0

それもそうです。しかし、 '4000'は 'CLOB'カラムに対する実際の(論理的な)制限ではないので、' ALL_TAB_COLS.DATA_LENGTH'は依然として 'NULL'または' CLOB'上限になる可能性があります –

+0

行内のストレージを無効にした場合:TABLESPACE " USERS "ROW値のストレージを無効にするのは私の場合は86です。 –

関連する問題