2013-08-29 1 views
2

oracle db에서 thexml을 검색 한 다음 동일한 xml을 Oracle Database 다른 테이블에 삽입하려고합니다. select via clob은 잘 작동하지만 updation 중에 오류가 발생합니다.Java Sql 예외

java.sql.Clob myClob = null; 
connect = DriverManager.getConnection(str2, str3, str4); 
String sql = "select xml from table1 where id='3|32'"; 
stmt = connect.prepareStatement(sql); 
ResultSet rs = stmt.executeQuery(); 
while (rs.next()) { 
    myClob = rs.getClob("XML"); // This part is working fine. 


    //Updation 


    connect1 = DriverManager.getConnection(str22, str33, str44); 
    String query1 = "update documentsout set xml = ? " + 
     "where id = ? "; 
    stmt1 = connect1.prepareStatement(query1); 
    stmt1.setString(1, myClob); // Inserting the same CLOB 
    stmt1.setString(2, id); 
    stmt1.executeUpdate();  // ERROR HERE 

오류가

java.sql.SQLException: ORA-00600: internal error code, arguments: [kglgtbo1], [0x700000482AA4608], [], [], [], [], [], [], [], [], [], [] 

당신이 도와 주실 수

입니까?

+0

어떤 오라클 버전을 사용하고 있습니까? – andi

+0

@Gourav 당신이 이것을 알아낼 수 있었습니까? 나는 (삽입물 임에도 불구하고) 같은 문제를 겪고있다. '.setString()'&'.setClob()'- 나를 위해 일하지 않습니다. – inyourcorner

답변

2

DBA 및/또는 Oracle 지원 담당자에게 문의하십시오. 이 ORA-00600 오류에 대한 문서에 따르면 실제로 이것은 Oracle 자체의 내부 문제입니다.

출처 : http://www.orafaq.com/wiki/ORA-00600

0

사용이

stmt.setClob(position, clob); 

대신

stmt1.setString(1, myClob); 
+1

나는 set clob도 시도했다. – Gourav

+1

stmt1.setClob (1, myClob); 하지만 같은 결과가 – Gourav

+0

입니다. 다른 이유가있을 수 있습니다 –

0

당신이이 L이있을 수 있습니다

// get clob 
    java.sql.Clob clob = (java.sql.Clob) rs.getObject(1); 

    // set clob 
    String query = "insert into clob_table(id, clob_column) values(?, ?)"; 
    pstmt = conn.prepareStatement(query); 
    pstmt.setString(1, newID); 
    pstmt.setClob(2, clob); 
+0

Rakesh .... 내가 말했듯이 내 마지막 코멘트에서 ... 나는 setClob를 시도했지만 여전히 작동하지 않는다. – Gourav

0

의 setClob 방법을 사용해야합니다 모방,하지만 그것은 내 상황에 효과. 아래의 srcValue은 clob 필드 인 소스 (src)에서 읽은 값이고 stmt은 (내 경우에는 삽입 된) 준비된 명령문입니다. 목표 (tgt)는 또한 clob 필드입니다.

 Clob srcClob = (Clob)srcValue; 
     Clob tgtClob = stmt.getConnection().createClob(); 
     tgtClob.setString(1, srcClob.getSubString(1, (int)srcClob.length())); 
     stmt.setClob(icol, tgtClob); 

clob이 연결/세션에 어떤 방식으로 연결되어 있다고 생각합니다. 해결 방법이 필요합니다. 더 좋은 방법이 있다면 나는 모두 귀입니다.