MySQL存储过程
本章重点内容:
- 创建存储过程
- 存储过程的传参问题
- 结果集的遍历
- mysql中的游标
1.创建存储过程与调用
1️⃣ 可以使用连接客户端的工具可视化操作,以navicat为例
在下一步中,可以填入你调用时想要传递的参数。 可以不添加。然后点击完成即可。
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
发起调用
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️⃣ 使用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函数。