Problem polega na tym, że pierwsza kolumna jest typem danych liczbowych, ale przygotowana instrukcja przesyła typ danych typu string/VARCHAR. Instrukcja jest uruchamiana bez zmian, Oracle nie ma możliwości przekonwertowania użycia nextval w celu uzyskania wartości sekwencji.
Oto alternatywa za pomocą składni PreparedStatement Javy:
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);
Zakłada się, że user
to istniejąca sekwencja — zmień ją, aby dopasować.