2017-01-17 7 views
0

私は、クエリjdbcを使用してOracleで長い文字列の更新クエリを書き込む方法は?

String sqlQuery = 'update t1 set col1 = ? where colId = ?'; 

表の構造を有する:

t1 table 
-------------- 
colId |col1 
--------|------ 
Integer |Clob 
------------- 

COL1 - 値が4000以上の文字にすることができます。

SQL Error: ORA-01704: string literal too long 01704. 00000 - "string literal too long"

SQL更新クエリを作成する方法:私は、次のエラーを取得していますクエリを実行ので 、。私はストアドプロシージャをしたくないですか?誰でも助けてくれますか?

答えて

2

Clobそれは、あなたのケースで十分なはずですあなたはすでに気づいている限り4,000文字に制限されているStringリテラルとしての価値を提供するのではなく、この問題を回避するために限り2,147,483,647文字まですることができ、それを提供nAsciiストリームまたはClobとして、setAsciiStreamのいずれかの方法のおかげで、またはクラスPreparedStatementsetClob(int parameterIndex, Reader reader)メソッドのおかげで、ここで

は、具体的な例である:

PreparedStatement ps = ... 

// - set the value of the input parameter to the input Reader 
ps.setClob(1, new StringReader(myStringContent)); 
// Or setAsciiStream(1, fis); 
ps.setInt(2, id); 
ps.execute(); 
関連する問題