Comment appeler une procédure stockée dans JDBC

Pour les devoirs que j'ai à créer une procédure stockée pl/sql pour ajouter un membre de la facutlé à une base de données

CREATE OR REPLACE PROCEDURE ADDFACULTYDEPTSAL
  (facid IN NUMBER,
  facname IN VARCHAR,
  depID IN NUMBER)
AS
  sal NUMBER;
BEGIN
  CALCSALDEPT(depID, sal);
  IF sal >= 50000
  THEN 
    sal := sal*.9;
  ELSE
    IF sal >= 30000
    THEN
      sal := sal*.8;
    END IF;
  END IF;

  INSERT INTO FACULTY(fid, fname, deptid, salary)
  VALUES(facid, facname, depID, sal);
END ADDFACULTYDEPTSAL;

Après avoir fait cela, j'ai besoin de faire un appel java pour ladite procédure, j'en ai marre de faire avec:

Statement stmt = dbConnection.createStatement();
String in;
if(a == 1){
    in = "ADDFACULTYDEPTSAL("
        + fid.getText() + "','"
        + fname.getText() + "','"
        + did.getText() + "')";
} else {
    in = "ADDFACULTYUNISAL("
        + fid.getText() + "','"
        + fname.getText() + "','"
        + did.getText() + "')";
}
stmt.executeQuery(in);

J'ai ci-dessus dans un bloc try catch qui continue de lancer une erreur. J'ai essayé plusieurs variantes sur la chaîne "dans" d'après ce que j'ai vu sur d'autres sites:
en = "{call ADDFACULTYDEPSAL ...
en = "appel ADDFACULTYDEPSAL ...

à regarder ici: MySQL Connector Guide
J'ai aussi essayé de changer stmt à un callable énoncé en tant que tel:

CallableStatement stmt;
if(a == 1){
    stmt = dbConnection.prepareCall("{call ADDFACULTYDEPTSAL(?,?,?)}");
} else {
    stmt = dbConnection.prepareCall("{call ADDFACULTYUNISAL(?,?,?)}");
}

Cependant, en essayant de cette façon ne semble pas fonctionner parce que j'ai besoin de passer plus de deux variables dans la procédure.

Quelqu'un peut me dire ce que je fais mal?

InformationsquelleAutor Eric | 2015-10-11