Вызов хранимой процедуры 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(?,?)}");

Первый? в вашем коде используется для типа возврата

Другие вопросы по тегам