MySQL进阶-存储过程

MySQL进阶-存储过程

Jason Lv3

1.基本语法

1
2
3
4
5
6
DELIMITER $$ -- 修改SQL语句的结束符为$$
CREATE PROCEDURE 存储过程名(参数列表) -- 创建存储过程
BEGIN
-- 存储过程体
END $$ -- 存储过程结束
DELIMITER ; -- 修改回原来的结束符

2.变量

  • 系统变量
    1
    2
    3
    show session/global variables --支持模糊查询
    select @@autocommit --查看变量
    set @@autocommit = 0 --修改变量
  • 自定义变量
    1
    2
    3
    -- 仅限会话
    set @变量名 =
    select @变量名 -- 查看
  • 局部变量
    1
    2
    3
    -- 仅限存储过程
    declare 变量名 '类型' [default 值]
    set 变量名 =

3.流程控制

  • if
    1
    2
    3
    4
    5
    -- 单分支
    if 条件 then
    elseif then
    else
    end if;
  • 参数
    1
    2
    -- 参数
    IN 输入参数 OUT 输出参数 INOUT 输入输出参数
  • 循环:
    • while
    • repeat 满足条件退出循环
    • loop 配合 leave 退出循环 iterate 继续下次循环 使用
      1
      2
      3
      4
      while 条件 do
      end while;
      repeat
      until 条件 end repeat;

4.游标

1
2
3
4
5
-- 游标
declare 游标名 cursor for 查询语句;
open 游标名; -- 打开游标
fetch 游标名 into 变量名; -- 获取数据
close 游标名; -- 关闭游标

5.异常

1
2
3
4
5
6
7
8
9
10
11
12
-- 异常                 
declare exit handler for [SQLSTATE 'XXXX'(异常状态码)/not found] 执行操作
```
![存储过程游标异常处理.jpg](/images/MySQL/存储过程游标异常处理.jpg)

- 存储函数
```sql
-- 存储函数 与存储过程类似 只能是IN类型参数 不能有输出类型参数 必须有return返回值
CREATE FUNCTION 函数名(参数列表)
RETURNS type characters --必须指定特征类型
--- 调用函数
select 函数名(参数列表)
  • Title: MySQL进阶-存储过程
  • Author: Jason
  • Created at : 2023-09-07 21:16:38
  • Updated at : 2023-09-10 16:00:44
  • Link: https://xxxijason1201.github.io/2023/09/07/MySQL/存储过程/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
MySQL进阶-存储过程