Вызов хранимой процедуры JDBC
Я создал хранимую процедуру следующим образом:
// Хранимые процедуры в mysql
DELIMITER $$
CREATE PROCEDURE `bank`.`hello` (in id varchar(20),in pass varchar(20))
BEGIN
insert into admin(username,password) values (id,pass);
END $$
DELIMITER ;
и я вызываю хранимую процедуру в Java следующим образом:
// вызов хранимых процедур с использованием JDBC
package StoredProcEx;
import java.sql.*;
public class StoredProcEx {
public static void main(String arg[]){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","root");
//PreparedStatement stmt=con.prepareStatement("insert into admin values(?,?)");
CallableStatement stmt=con.prepareCall("{?=call hello(?,?)}");
stmt.setString(1,"birender");
stmt.setString(2,"admin");
stmt.execute();
//stmt.execute();
}
catch(ClassNotFoundException ce){
ce.printStackTrace();
}
catch(SQLException se){
se.printStackTrace();
}
catch(Exception e){}
}
}
Но это показывает исключение времени компиляции следующим образом:
Может установить параметр IN для возвращаемого значения вызова хранимой функции.
1 ответ
Пожалуйста, используйте
CallableStatement stmt=con.prepareCall("{call hello(?,?)}");
вместо
CallableStatement stmt=con.prepareCall("{?=call hello(?,?)}");
Первый? в вашем коде используется для типа возврата