含一个参数的存储过程的调用:根据姓名得到学生对象
delimiter $$
create procedure getStu(n varchar(50))
begin
select * from user where name =n;
end
delimiter ;
//1.连接数据库
Connection conn = JDBCUtil.getConnection();
//2.调用存储过程
CallableStatement cs = conn.prepareCall("{ call getStu(?) }");
//3.设置参数
cs.setString(1, "aaa");
//4.执行存储过程
ResultSet res = cs.executeQuery();
if(res.next()){
Student stu = new Student();
stu.setId(res.getInt("id"));
stu.setName(res.getString("name"));
System.out.println(stu);
}
含两个参数的存储过程的调用:根据ID获取姓名
delimiter $$
create procedure getName(i id int, out n varchar(50))
begin
select id into i from user where name =n;
end
delimiter ;
调用:call getName(1,@res);
select @res;
//1.连接数据库
Connection conn = JDBCUtil.getConnection();
//2.调用存储过程
CallableStatement cs = conn.prepareCall("{ call getName(?,?)}");
//3.设置参数
cs.setInt(1, 1);
//4.设置输出参数
cs.registerOutParameter(2, Types.VARCHAR);
//5.执行存储过程
cs.execute();
//输出得到的参数
String name = cs.getString(2);
System.out.println(name);