MySQL存储过程

发布于:2025-05-12 ⋅ 阅读:(16) ⋅ 点赞:(0)

介绍:存储过程就是将sql操作进行集合,方便用户的调用和服用。

特点:封装,复用,可以接受参数,也可以返回数据,减少网络交互,效率提升。

创建:
create procedure 存储名称([参数列表])
begin
        ---sql语句
end;
调用:     call 名称([参数]);
查看:
sellect * from information_schema where routine_schema='xxx'; 查询指定数据库的存储过程以及状态信息。
删除:
drop procedure [if exists]存储过程名称。

注意:在命令行中,执行创建过程sql时,需要通过关键字delimiter指定sql语句的结束符。

变量:

  1. 系统变量:系统变量是MySQL服务器提供的,不是用户定义的,属于服务器层面,分为全局变量(GLOBAL),会话变量(session)。

    查看系统变量
    show [session | global] variables;  查看所有系统变量。
    show [session | global] variables like '....'   可以通过like模糊匹配方式查找变量
    select @@[session | global] 系统变量名   --指定变量的值
    -------------------------------------------------
    设置系统变量
    set [session | global]  系统变量名=值
    set @@[session | global]    系统变量名=值

    注意:如果没有指定session或者global默认就是session,会话变量。MySQL服务重启之后,所设置的全局参数会失效,要想不失效,需要在/etc/my.cnf中配置。

    1. 用户自定义变量:用户根据需要自己定义变量,用户变量不用提前说明,在用的时候直接用@变量名使用就可以。

    2. 赋值:
         set @var_name = expr[,@var_name = expr]
         set @var_name := expr[,@var_name =expr]
         select @var_name := expr[,@var_name := expr]
         select 字段名 into @var_name from 表名;

    使用: select @var_name;

用户的自定义变量无需对其进行声明以及初始化,只不过获取到的值为null

  1. 局部变量:

    1. 局部变量是根据需要定义在begin和end之间,是根据需要定义在局部生效的变量,需要declare声明

    2. 声明:
      declare 变量名 变量类型[default];
      变量类型就是数据库字段类型。
      赋值:
      set 变量名 = 值
      set 变量名 := 值
       select 字段名 into 变量名 from 表名
  2. 参数:

用法:

CREATE PROCEDURE 存储过程名称([IN/OUT/INOUT 参数名 参数类型])
BEGIN
        --sql语句
end;
  1. while循环条件:

  1. repeat循环:repeat循环,当条件满足的时候,退出循环

    1. loop循环:loop实现简单的循环,如果不在sql逻辑当中增加退出循环的条件。会造成死循环。

    - leave:配合循环使用,表示退出循环。
    • iterate:必须用在循环当中,作用是跳过当前循环,直接进入下一个循环。

游标

游标是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理,游标的使用包括游标的声明,open,fetch,close。游标解决的是在存储过程当中如果返回的时候是一张表,或者不止一行的状态下,进行解决。

 

声明游标
declare 游标名称 cursor for 查询语句
打开游标
open 游标名称
获取游标记录
fetch 游标名称 into 变量[,变量]
关闭游标
close 游标名称


网站公告

今日签到

点亮在社区的每一天
去签到