MySQL数据库之存储过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38225558/article/details/82813892

存储过程(Stored Procedure):一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

为什么要使用存储过程??

①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用
②批量处理:SQL+循环,减少流量,也就是“跑批”
③统一接口,确保数据的安全

相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。

创建存储过程

delemiter //
create procedure 存储过程名([存储过程参数列表])
begin
    set 参数名=参数;
    SQL语句
end //

为什么使用delemiter??

mysql默认以分号作为sql语句的结束来进行执行,当我们在创建存储过程时,为了不让完整的存储过程语句由于分号而提前执行,需要临时规定以//或者$$来作为结束符号。这样的话,创建存储过程时,中间的分号会被忽略,直到遇到//符号才执行语句

存储过程参数分类存储过程可以有0个或多个参数,用于存储过程的定义。
3种参数类型:
IN输入参数表示调用者向过程传入值(传入值可以是字面量或变量)

delimiter //
create procedure 存储过程(in 变量名 类型)
begin
    set 变量名=值;
    SQL语句
end //

call 存储过程名(参数值)

OUT输出参数表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

delimiter //
create procedure 存储过程(out 变量名 类型)
begin
    set 变量名=值;
    SQL语句
end  //

call 存储过程名(参数值)

ex: 

create  procedure  out_param(out  p_out  int)
      begin
        select  
p_out;
        set  
p_out = 2;
        select  
p_out;
      end

set  @p_out = 1;
call  
out_param(@p_out);
select  @
p_out;

INOUT输入输出参数既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

create procedure out_param(inout p_out int)
      begin
        select p_out;
        set p_out=2;
        select p_out;
      end

set @p_out=1;
call out_param(@p_out);
select @p_out;

调用存储过程

set @参数名
call 存储过程名字([参数])

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/82813892