per compiti a casa devo creare un pl/sql stored procedure per aggiungere un membro facutly a un databaseCome chiamare una stored procedure in JDBC
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;
Fatto questo, ho bisogno di fare una chiamata java per tale procedura, che ho stanco a che fare con:
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);
ho quanto sopra in un blocco catch try che mantiene gettare un errore. Ho provato diverse varianti sulla corda "in" sulla base di quello che ho visto in altri siti: in = "{call ADDFACULTYDEPSAL ... in =" call ADDFACULTYDEPSAL ...
cercando qui: MySQL Connector Guide anche io provato a cambiare stmt una dichiarazione richiamabile in quanto tale:
CallableStatement stmt;
if(a == 1){
stmt = dbConnection.prepareCall("{call ADDFACULTYDEPTSAL(?,?,?)}");
} else {
stmt = dbConnection.prepareCall("{call ADDFACULTYUNISAL(?,?,?)}");
}
Tuttavia, cercando in questo modo non sembra funzionare perché ho bisogno di passare più di due variabili nella procedura.
Qualcuno può dirmi cosa sto facendo male?
che funziona. Grazie. – Eric