do prac domowych muszę stworzyć PL/SQL procedura przechowywana, aby dodać facutly członka do bazyJak wywołać procedurę przechowywaną w 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;
Uczyniwszy to, muszę nawiązać połączenie java dla wspomniana procedura, którą mam zmęczony zrobić z:
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);
Mam powyższy w próbie catch catch, który ciągle rzuca błąd. Próbowałem kilka wariantów na strunie "w" na podstawie tego, co widziałem na innych stronach internetowych: in = "{zadzwonić ADDFACULTYDEPSAL ... In =" call ADDFACULTYDEPSAL ...
patrząc tutaj: MySQL Connector Guide ja również próbowałem zmieniając stmt do rachunku na żądanie, takich jak:
CallableStatement stmt;
if(a == 1){
stmt = dbConnection.prepareCall("{call ADDFACULTYDEPTSAL(?,?,?)}");
} else {
stmt = dbConnection.prepareCall("{call ADDFACULTYUNISAL(?,?,?)}");
}
jednak próbując w ten sposób nie wydaje się działać, bo trzeba przejść więcej niż dwie zmienne do procedury.
Czy ktoś może mi powiedzieć, co robię źle?
To działa. Dziękuję Ci. – Eric