首页 > 技术文章 > Mysql 存储过程声明及使用

XhyTechnologyShare 2019-11-14 20:41 原文

存储过程(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();    # 调用存储过程

 

推荐阅读