1、创建存储过程SQL语句
#创建存储过程
create procedure mysql_add(in x1 int,in x2 int , out y int)
begin
set y := x1 + x2;
end
#调用存储过程
call mysql_add(2,3,@y)
#查询结果
select @y;
#查询所有的存储过程
show procedure status;
1.1、Java调用存储过程
@org.junit.Test
public void testcallablestatement() throws Exception {
long start = System.currentTimeMillis();
//创建连接
String driverClass = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
String username = "root";
String password = "root";
Class.forName(driverClass);
Connection con = DriverManager.getConnection(url, username, password);
//关闭自动提交
con.setAutoCommit(false);
//调用存储过程
CallableStatement cst = con.prepareCall("{call mysql_add(?,?,?)}");
//设置输入参数
cst.setInt(1,2);
cst.setInt(2,4);
//设置输出参数
cst.registerOutParameter(3,Types.INTEGER);
//执行存储过程
cst.execute();
//获取返回结果
int result = cst.getInt(3);
System.out.println(result);
//提交
con.commit();
cst.close();
con.close();
long time = System.currentTimeMillis() - start;
System.out.println(time);//5351
}
2、利用存储过程向表中插入数据
#创建百万数据插入过程
create procedure procedure_insert(in n int)
begin
declare id int;
declare name varchar(20);
declare age int;
declare i int default 0;
while i < n do
set id := i;
set name := concat('tome',i);
set age := i % 100;
insert into student (id,name,age) values (id,name,age);
set i := i + 1;
end while;
END
#调用插入数据的存储过程
call procedure_insert(100)
2.1、Java调用存储过程
@org.junit.Test
public void testprocedure_insert() throws Exception {
long start = System.currentTimeMillis();
//创建连接
String driverClass = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
String username = "root";
String password = "root";
Class.forName(driverClass);
Connection con = DriverManager.getConnection(url, username, password);
//关闭自动提交
con.setAutoCommit(false);
//调用存储过程
CallableStatement cst = con.prepareCall("{call procedure_insert(?)}");
//设置输入参数
cst.setInt(1,100000);
//执行存储过程
cst.execute();
//提交
con.commit();
cst.close();
con.close();
long time = System.currentTimeMillis() - start;
System.out.println(time);//2085
}
欢迎关注我的公众号:小秋的博客
CSDN博客:https://blog.csdn.net/xiaoqiu_cr
github:https://github.com/crr121
联系邮箱:rongchen633@gmail.com
有什么问题可以给我留言噢~