JDBC调用数据库中的存储过程,可以使用CallableStatement对象。
1.创建存储过程
以MySQL为例,我们创建一个名字叫sumCoursePassNumber的存储过程,需要使用输入和输出参数,其中输入参数表示指定的课程编号,输出参数表示返回的及格人数。
#创建存储过程
create PROCEDURE sumCoursePassNumber(in p_cid varchar(4),out num int)
begin
select count(*) into num from score where cid= p_cid and score>=60;
end;
#查询课程编号为'C001'的及格人数
call sumCoursePassNumber('C001',@num);
select @num;

2.使用CallableStatement调用MySQL存储过程
编写测试类。
Connection conn = null;
CallableStatement cstmt = null;
String sql = "";
try{
conn = DBUtils.getConnection();
sql = "{call sumCoursePassNumber(?,?)}";
cstmt = conn.prepareCall(sql);
//传参
cstmt.setString(1, "C001");
cstmt.registerOutParameter(2, Types.NUMERIC);
//执行存储过程
cstmt.execute();
System.out.println("C001这门课程及格人数是:"+cstmt.getInt(2));
}catch(Exception ex){
ex.printStackTrace();
}
运行结果:
C001这门课程及格人数是:2