Problemet är att den första kolumnen är en numerisk datatyp, men ditt förberedda uttalande skickar en sträng/VARCHAR-datatyp. Uttrycket körs som det är, det finns ingen möjlighet för Oracle att konvertera din användning av nextval för att få sekvensvärdet.
Här är ett alternativ via Javas PreparedStatement-syntax:
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);
Detta förutsätter att user
är en befintlig sekvens -- ändra till färg.