2016-03-23 12 views
-1

私は既存のプロジェクトで作業しており、Oracleデータベース用のDMLを準備する必要があります。 しかし、私は4000バイトより大きい巨大なサイズのためにBLOBデータのInsert文を準備することができません。誰も私を助けることができますか?Insert文を使用して3200を超えるBLOBデータを挿入できません

N.B:このエラーが発生しました。ORA-06550:文字列リテラルがあまりにも大きすぎます。

INSERT文のみ、javaプログラムはありません。私は挿入文のようなDMLを準備する必要があります。

私のINSERT文:

INSERT INTO APP_PROF('ID', 'IMAGE') VALUES('2', TO_BLOB('4654655665....')) 

この画像ブロブデータは45000bytes事前に

おかげでより大きくなります。

+0

一部のプログラムコードなしでは実行できません。 Oracleはリテラルが4000バイト(またはOracle 12以降32K)を超えることを許可していません –

答えて

1

はい。 BLOBを挿入するには、String /バイト配列ではなくstreamを使用します。このような何か:

PreparedStatement ps = conn.prepareStatement("insert into blobs (blob_value) values (?)"); 
InputStream in = new StringBufferInputStream(aLagrgeStringValue); 
ps.setBinaryStream(1,in,(int)in.length()); 
ps.execute(); 
+0

私はSQL開発者を使用していますが、SQL挿入文ではJava言語は使用できません。 –

+0

DBMS_LOBパッケージを参照してください。 https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_lob.htm –

0

私はここで見つける問題は、あなたがrecivingているBLOB列とエラーに挿入するために文字列値を使用していることであるが、入力文字列ではなく、BLOB列の制限エラーですテーブルの

詳細については、次のリンクを参照してください。

How to convert VARCHAR2 to BLOB inside Oracle 11g PL/SQL after ORA-06502

+0

TO_BLOB関数内に16進文字列があるため、エラーは発生しません。その作業私は4000バイト未満の多くの行を挿入しました。 –

+0

@Md。 Naushad Alam文字列の長さが最大サイズ(つまり4000バイト)を超えても同じことはできません。これは受信しているエラーです。問題を確認するには、4000バイトを超える他のテーブルからBLOBを挿入してみてください – Hari

関連する問題