Vielleicht hilft Ihnen das Lesen dieses Artikels:Calling MySQL Stored Procedures from JDBC
Hier machen Sie einen Fehler:
mysqlquery = mysqldbconn.prepareCall(vstrSQLStatement);
Sie verwenden nicht die deklarierte 'callstoredprocedure'.
Lesen Sie das Beispiel unten:
public static void getSkills(int candidateId) {
//
String query = "{ call get_candidate_skill(?) }";
ResultSet rs;
try (Connection conn = MySQLJDBCUtil.getConnection();
CallableStatement stmt = conn.prepareCall(query)) {
stmt.setInt(1, candidateId);
rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(String.format("%s - %s",
rs.getString("first_name") + " "
+ rs.getString("last_name"),
rs.getString("skill")));
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
Lassen Sie mich erklären:Die Abfrage ist definiert, ähnlich wie bei Ihrem Anruf, der 1 Parameter akzeptiert, der keinen Wert zurückgibt. Dann wird es verwendet in:conn.prepareCall() , und dann wird der Parameter auf die Anweisung gesetzt und dann ausgeführt.
Wie ich bereits erwähnt habe, sollten Sie Folgendes tun:
mysqlquery = mysqldbconn.prepareCall(callstoredprocedure);
Bitte lassen Sie mich wissen, ob dies Ihr Problem behoben hat.