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?
Vous devez vous connecter pour publier un commentaire.
Vous avez été près de là: