MySQL存储过程

308 阅读2分钟

MySQL存储过程

本章重点内容:

  • 创建存储过程
  • 存储过程的传参问题
  • 结果集的遍历
  • mysql中的游标

1.创建存储过程与调用

1️⃣ 可以使用连接客户端的工具可视化操作,以navicat为例

image-20220426130339248

在下一步中,可以填入你调用时想要传递的参数。 可以不添加。然后点击完成即可。

image-20220426130515149

2️⃣ 使用语句进行添加

下列语句是一个无参的存储过程语句

-- 创建一个无参的存储过程
CREATE PROCEDURE test()
-- 过程体在BEGIN->END之间
BEGIN--  编写你的业务逻辑END

2. 存储过程的传参问题

参数写在存储过程名的括号中,格式为

CREATE PROCEDURE test([IN|OUT] [para] [type])

[IN|OUT] --表示输入的还是输出的。

[para] 为参数名

[type] 为类型

例如

  CREATE PROCEDURE pro_test(IN num int,OUT test VARCHAR(10))

这个存储过程有两个参数,一个是输入的,一个是输出的。

3. 存储过程的调用

存储过程的调用使用CALL关键字进行调用。

例如 call test(1,@result);

完整事例

如果输入是1 则输出 user1

如果输入是2 则输出 user2

CREATE PROCEDURE pro_test(in num int,OUT test VARCHAR(10))
BEGIN 
IF num = 1 
THEN 
  SET test='user1';
ELSEIF num = 2
THEN
  SET test='user2';
ELSE
  SET test='user3';
END IF;
END

发起调用

image-20220426133738117

4. 变量声明

在声明多个变量时要注意顺序,所有变量声明在前,赋值在后。

DECLARE i INT;  # 申明变量
DECLARE u INT;  # 申明变量
SET i=3;

下面是错误的声明, 因为两个变量的声明之间有赋值语句。

DECLARE i INT;  # 申明变量
SET i=3;
DECLARE u INT;  # 申明变量

5. 判断语句

基本格式

IF

THEN

do you want to do;

END IF;

IF num = 1
THEN 
	do something;
ELSEIF num = 2
THEN
	do something;
ELSE
  do something;
END IF;

6.循环语句

一共有三种循环,第三种觉得不好用。

参考内容1

参考内容2

1️⃣ 使用while do

WHILE i<5 DO # 结束循环的条件: 当i大于5时跳出while循环
  something you want to do;
END WHILE;  # 结束while循环:   REPEAT……END REPEAT。使用REPEAT循环控制语句编写下面这个存储过程:

2️⃣ REPEAT……END REPEAT。使用REPEAT循环控制语句编写下面这个存储过程:

 declare i int default 0;
     repeat
         insert into t1(filed) values(i);
         set i=i+1;
         -- 终止条件
         until i>=5
      end repeat;

7. mysql 中的游标使用(大招, 建议好好品品)。

具体的使用可以看看下面的文章。

参考内容

参考内容

8.mysql中定义的所有函数都可以在存储过程中使用

在存储过程中使用mysql定义的函数可以完成很多高级的功能,要熟悉的知道常用的mysql函数。

常用函数参考