私の質問は次のとおりです:ORA-01704: string literal too long
sを使用して挿入 (またはクエリで何かを実行) するときのエラーをどのように回避しますCLOB
か?
次のようなクエリが必要です。
INSERT ALL
INTO mytable VALUES ('clob1')
INTO mytable VALUES ('clob2') --some of these clobs are more than 4000 characters...
INTO mytable VALUES ('clob3')
SELECT * FROM dual;
実際の値で試してみるとORA-01704: string literal too long
戻ってきますが。これは非常に明白ですが、どうすれば clob を挿入できますか (または clob を使用して任意のステートメントを実行できますか)?
この質問を見てみましたが、探しているものが含まれていないと思います。私が持っているクロブは a にList<String>
あり、それらを繰り返し処理してステートメントを作成します。私のコードは次のとおりです。
private void insertQueries(String tempTableName) throws FileNotFoundException, DataException, SQLException, IOException {
String preQuery = " into " + tempTableName + " values ('";
String postQuery = "')" + StringHelper.newline;
StringBuilder inserts = new StringBuilder("insert all" + StringHelper.newline);
List<String> readQueries = getDomoQueries();
for (String query : readQueries) {
inserts.append(preQuery).append(query).append(postQuery);
}
inserts.append("select * from dual;");
DatabaseController.getInstance().executeQuery(databaseConnectionURL, inserts.toString());
}
public ResultSet executeQuery(String connection, String query) throws DataException, SQLException {
Connection conn = ConnectionPool.getInstance().get(connection);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
conn.commit();
ConnectionPool.getInstance().release(conn);
return rs;
}