web-dev-qa-db-ja.com

エラー:ORA-01704:文字列リテラルが長すぎます

データ型がCLOBのフィールドに4000文字を超える値を設定しようとすると、次のエラーが表示されます。

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

私の場合、たぶん15000文字。

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

28
hsuk

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;
/

SQLFiddleの証明リンク

44
knagaev

以下のクエリのように、文字を複数のチャンクに分割してみてください:

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

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

24
Ameer Tamboli

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

2
kazzikazzi