Clob errorORA-01704: string literal too long
그러나 문자열 의 길이 가>4000 일 때 error ORA-01704:string literal too long 오류 가 발생 합 니 다.
SQL 문 구 는 허용 되 는 길 이 를 초과 해 PL/SQL 에서 더 짧게 제 한 될 수 있 기 때문이다.
처리 방법:
자바 에 서 는 prepared Statement 을 참조 할 수 있 습 니 다.PL/SQL 에 서 는 변 수 를 사용 할 수 있 습 니 다.
tomcat 6.0 과 weblogic 9.2 테스트 통과
/**
* @param conn
*
* @param table
*
* @param idColumn
*
* @param idValue
*
* @param clobColumn
* CLOB
* @param clobValue
* CLOB
* @return
*/
public int updateClob(Connection conn, String table, String idColumn, String idValue, String clobColumn,
String clobValue) {
int se = -1;
ResultSet rs = null;
PreparedStatement pst = null;
boolean defaultCommit = true;
try {
defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
// Clob
String updateToEmptySql = "UPDATE " + table + " SET " + clobColumn + " = EMPTY_CLOB() WHERE " + idColumn
+ "='" + idValue + "'";
pst = conn.prepareStatement(updateToEmptySql);
pst.executeUpdate();
// Clob
String getForUpdateSql = "select " + clobColumn + " from " + table + " where " + idColumn + " = '"
+ idValue + "' for update";
pst = conn.prepareStatement(getForUpdateSql);
rs = pst.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) (rs.getClob(clobColumn));
clob.putString(1, clobValue);
String sql = "update " + table + " set " + clobColumn + "=? where " + idColumn + "='" + idValue + "'";
pst = conn.prepareStatement(sql);
pst.setClob(1, clob);
se = pst.executeUpdate();
conn.commit();
conn.setAutoCommit(defaultCommit);
}
} catch (SQLException e) {
se = -1;
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return se;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.