String a1="01002";
   String a2="影子";
   String a3="河北";
String sql="merge into table1 t1 using (select ? as id,? as name,? as address from dual) t2  "+ 
"on (t1.id = t2.id)    "+
"when not matched then    "+
 "    insert values (t2.id, t2.name,t2.address) ";  
   stmt =  conn.prepareStatement(sql);
 stmt.setString(1, a1); 
 stmt.setString(2, a2);
 stmt.setString(3, a3);
 int rows = stmt.executeUpdate();
 System.out.println("更新的记录数: " + rows);           
          
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
           while(rset.next())
           {  
            splitid = rset.getString(1);
waferqty = rset.getString(2);
System.out.println("splitid:"+splitid+"    waferqty:"+waferqty);
}
rset.close();
st.close();

解决方案 »

  1.   

    重新整理了一下:
    String a1="01002";
       String a2="影子";
       String a3="河北";
    String sql="merge into table1 t1 using (select ? as id,? as name,? as address from dual) t2  "+ 
    " on (t1.id = t2.id)    "+
    " when not matched then    "+
    " insert values (t2.id, t2.name,t2.address) ";  
     stmt =  conn.prepareStatement(sql);
     stmt.setString(1, a1); 
     stmt.setString(2, a2);
     stmt.setString(3, a3);
     int rows = stmt.executeUpdate();
     System.out.println("更新的记录数: " + rows);           
              
    java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG columnat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
            rset.close();
    st.close(); 
      

  2.   

    如果不用变量绑定就可以,使用变量绑定就报错,请问是否有解决的方法?   
    String a1="010021";
       String a2="影子1";
       String a3="河北1";
    String sql="merge into table1 t1 using (select '"+a1+"'   id,'"+a2+"'   name,'"+a3+"'   address from dual) t2  "+ 
    "on (t1.id = t2.id)    "+
    "when not matched then    "+
     "    insert values (t2.id, t2.name,t2.address) ";  
       stmt =  conn.prepareStatement(sql);
    /* stmt.setString(1, a1); 
     stmt.setString(2, a2);
     stmt.setString(3, a3);*/
     int rows = stmt.executeUpdate();
     System.out.println("更新的记录数: " + rows);     st.close();