Problém je v tom, že první sloupec je číselný datový typ, ale váš připravený příkaz odesílá datový typ řetězec/VARCHAR. Příkaz je spuštěn tak, jak je, Oracle nemá příležitost převést vaše použití nextval na získání hodnoty sekvence.
Zde je alternativa prostřednictvím syntaxe Java's PreparedStatement:
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);
To předpokládá, že user
je existující sekvence -- změňte, aby vyhovovala.