Mysql 存储过程声明及使用
存储过程(Stored Procedure):是一组用于完成特定数据库功能的sql语句集,该sql语句集经过编译后存储在数据库系统中,在使用的时候,用户通过调用指定已经定义好的存储过程并执行它,从而完成一系列的数据库操作;
1.声明创建一个存储过程
# 定义基本存储过程 DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它 DELIMITER // # 定义存储过程结束符, CREATE PROCEDURE test() # 创建存储过程 BEGIN # 存储过程要执行的操作 SELECT 'Hello World!' END// CALL test(); # 调用存储过程
2.声明变量
#存储过程变量的声明和使用 DROP PROCEDURE IF EXISTS test; #如果存在指定存储过程则删除它 DELIMITER // # 定义存储过程结束符, CREATE PROCEDURE test() BEGIN DECLARE aa VARCHAR(20); # 定义变量 DECLARE bb INT DEFAULT 0; # 定义int 类型变量 默认为0; SET aa = '张三'; # 变量赋值 SELECT aa; # 输出变量 SELECT bb; # 输出变量 END// CALL test(); # 调用存储过程
3.流程控制语句的声明使用
#存储过程流程控制语句使用 DROP PROCEDURE IF EXISTS test_2; DELIMITER // CREATE PROCEDURE test_2() BEGIN DECLARE aa INT; # 定义变量 DECLARE bb INT; # 定义变量 SET aa = 20; # 变量赋值 SET bb = 20; # 变量赋值 IF aa > bb THEN # 判断 SELECT aa; ELSEIF aa < bb THEN # else if 可以有多个 SELECT bb; ELSE # else 只能存在一个 SELECT aa+bb; END IF; # 结束if 语句 END// CALL test_2(); # 调用存储过程
4.loop 循环语句的使用
#loop 循环语句的使用 # 输出1-100之间所有数字之和 DROP PROCEDURE IF EXISTS test_3; DELIMITER // CREATE PROCEDURE test_3() BEGIN DECLARE aa INT DEFAULT 0; # 定义变量 默认值为0 DECLARE sums INT DEFAULT 0; # 定义变量 默认值为0 loopName:LOOP # 循环开始:loopName 定义循环名 SET aa = aa + 1; # 设置变量自增 SET sums = sums + aa; IF aa >= 100 THEN # loop 需要设置跳出条件,不然会变成死循环 LEAVE loopName; # 结束循环 END IF; # 结束if 语句 END LOOP; # 结束loop 循环语句 SELECT sums; # 输出结果 END// CALL test_3(); # 调用存储过程