2012-12-19 38 views
21

私はデータ型CLOBを持ってフィールド上の4000文字以上の値を設定しようとするが、それは私にこのエラー与える:エラー:ORA-01704:文字列リテラルが長すぎ

ORA-01704:文字列をリテラルは長すぎます。

私は私の場合のために、およそ15000文字であることを起こるが、無制限の文字の値を設定する必要がある場合は、データ型が私のために適用可能であろう任意の提案は、。

注:格納しようとしている長い文字列はANSIでエンコードされています。

答えて

36

CLOBで操作するときは何を使​​用していますか?あなたは以下のクエリのように、複数のチャンクに文字を分割して試してみてみPL/SQL

DECLARE 
    str varchar2(32767); 
BEGIN 
    str := 'Very-very-...-very-very-very-very-very-very long string value'; 
    update t1 set col1 = str; 
END; 
/

Proof link on SQLFiddle

+0

ありがとうございますが、CIは、これらの手順をサポートしていないことhttp://stackoverflow.com/questions/13946641/error-this-feature-is-not-available-for-the-database-you-are-using#を詰め込みますcomment19232999_13946641 – hsuk

+0

私はこのコードを手続きでラップすることができ、Codeigniterはそれを実行できると思います。申し訳ありませんが、私はチェックのためのCodeigniterを持っていません。ここを見て[リンク](http://stackoverflow.com/a/7930092/1910242) – knagaev

+0

はそれをやったが、私は、このリンクをチェックし、VARCHAR2のサイズを定義することができ、http://stackoverflow.com/questions/13947222/error -ORa-06553-PLS-306-間違った番号・オア・タイプ・オブ・引数・イン・コールに-proced/13947420#13947420 – hsuk

14

でそれを行うことができ、すべてのイベントで

Insert into table (clob_column) values (to_clob('chunk 1') || to_clob('chunk 2')); 

それは、私のために働いた。

1

分割は、挿入する文字に応じて4000文字までです。特殊文字を挿入すると失敗する可能性があります。 唯一の安全な方法は、変数を宣言することです。

関連する問題