九、数据库之存储过程和函数

1、说明:

  • 相同点:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字

  • 区别:

    返回值适用场景
    存储过程0个、多个批量插入、批量更新
    函数1个数据处理后返回一个结果

2、存储过程

零、含义

  • 一组预先编译好的SQL语句的集合,理解成批处理语句,后续使用就

零、好处

  • 提高重用性
  • sql语句简单
  • 减少了和数据库服务器连接的次数,提高了效率

一、创建 ★

create procedure 存储过程名(参数模式 参数名 参数类型)
begin
	存储过程体
end
  • 注意:
    1、参数模式:in(表示这个参数需要传入值)、out(这个参数可以作为返回值)、inout,其中in可以省略
    2、存储过程体的每一条sql语句都需要用分号结尾

    3、存储过程体内只有一条SQL语句时,可以省略begin…end

    4、存储过程体的结尾可以加上上文中使用delimiter设置的结束标志

二、调用

call 存储过程名(实参列表)
  • 举例:
  1. 创建并调用空参列表

    #创建
    delimiter $
    create procedure myp1()
    begin
    	insert into admin(username,password)
    	values('zhao','1111'),('qian','2222'),('sun','3333');
    end $
    
    #调用
    call myp1() $
    
  2. 创建并调用in模式的参数:call sp1(‘值’);

  3. 创建并调用out模式的参数:set @name; call sp1(@name);select @name;

  4. 创建并调用inout模式的参数:set @name=值; call sp1(@name); select @name;

三、查看

show create procedure 存储过程名;

四、删除

drop procedure 存储过程名;

3、函数

一、创建
create function 函数名(参数名 参数类型) returns  返回类型
begin
	函数体
end
  • 注意:
    • 函数体中肯定需要有return语句
    • 函数只有一句时,begin…end可以省略
    • delimiter , 然 后 用 ,然后用 结尾;
    • 自己生命变量接受查询值,然后返回
二、调用
select 函数名(实参列表);
三、查看
show create function 函数名;
四、删除
drop function 函数名;
原文地址:https://www.cnblogs.com/liuzhixian666/p/13829355.html