Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

.nextval problema de inserção JDBC


O problema é que a primeira coluna é um tipo de dados numérico, mas sua instrução preparada está enviando um tipo de dados string/VARCHAR. A instrução é executada como está, não há oportunidade para o Oracle converter seu uso de nextval para obter o valor da sequência.

Aqui está uma alternativa via sintaxe PreparedStatement do Java:
sql = "INSERT INTO USER 
        (USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL ) 
       VALUES 
        (user.nextval, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, accountNumber);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setString(4, email);

Isso pressupõe que user é uma sequência existente -- mude para se adequar.