sql作为数据库,不仅支持我们使用sql语句一条一条地向其中插入数据,还支持我们使用存储过程批量自动化录入数据。
存储过程解释
存储过程实际上就是函数,我们通过声明一个函数然后调用它去实现函数方法体中所有的逻辑,同样,我们也是通过声明一个sql存储过程然后调用这个存储过程去实现存储过程内sql语句的批量执行。
使用存储过程的优点
使用存储过程,我们可以简化sql语句,把重复的相似的sql语句封装成一个存储过程,然后在需要使用的时候直接调用这个存储过程就好了。
除此之外,存储过程还可以批量处理数据,来实现代码更高的吞吐量,而且,封装成存储过程之后,还可以保证数据的安全。
创建存储过程
创建存储过程的语法如下:
create procedure 存储过程名(是输入参数还是输出参数 参数名 参数类型)
begin
这里写存储过程的具体逻辑
end
这里的“是输入参数还是输出参数”可以写三种:
in表示传入一个参数,表示调用者向过程传入值
out表示输出参数,表示过程向调用者传出值
inout表示输入输出参数,既表示调用者向过程传入值,又表示过程向调用者传出值
光使用这些还不够,我们的存储过程中的每一句sql语句在结尾处是要写分号的,但是如果写了分号,数据库会认为我们当前声明存储过程的语句就到分号就结束了,这显然是我们不希望看到的。为了解决这个问题,我们需要暂时把sql语句的默认结束标志改成我们暂时用不到的字符,然后在声明完存储过程之后再把它改回来,为此,我们需要用到以下的语句:
delimiter $$ //第一次使用将默认结束标志改为$$
delimiter ; //第二次使用再将默认结束标志改回;
清楚了这些,我们现在就可以看一个例子了
delimiter $$
create procedure insertData(in data int)
begin
insert into t_person(age) values(data);
end$$
delimiter ;
如此,我们就完成了一个向t_person表中插入数据的存储过程,现在我们来调用它
调用存储过程
简单,直接使用call语句即可
call insertData(57);