Mysql存储过程示例以及说明

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能,目的是数据库 SQL 语言层面的代码封装与重用。

以下是一个向目标数据库写大量模拟数据的 存储过程 示例:

DROP PROCEDURE IF EXISTS proc_initData; 
DELIMITER $
CREATE PROCEDURE proc_initData()
BEGIN
    DECLARE i INT DEFAULT 80000;
    WHILE i>0 DO
        insert into SC (sc_id,s_id,c_id,score) value (i, FLOOR(RAND() * 10), FLOOR(RAND() * 10), FLOOR(RAND() * 100));
        SET i = i-1;
    END WHILE;
END $
CALL proc_initData();

DELIMITER ;

示例各语句含义详解:

  • DROP PROCEDURE IF EXISTS proc_initData
    查询是否有该存储过程,如果有,停止它
  • DELIMITER $
    定义分隔符为 $ ,因为存储过程语句中含有分隔的语句,避免和存储过程语句本身混淆
  • CREATE PROCEDURE proc_initData()
    创建一个 名为 proc_initData 的存储过程
  • BEGIN
    begin 和 end 是mysql中复合语句的定界符。
  • END $
    结束,自定义的分隔符 $ 表示到这里该语句结束
  • DECLARE i INT DEFAULT 80000;
    定义变量 i 类型为 int,初始默认值为 80000
  • WHILE i>0 DO
    开启循环语句,如果 i 大于0,则执行下面语句
  • insert into SC (sc_id,s_id,c_id,score) value (i, FLOOR(RAND() * 10), FLOOR(RAND() * 10), FLOOR(RAND() * 100));
    写入数据
  • SET i = i-1;
    设置 i 的值,每执行一次对该值进行更新
  • END WHILE;
    循环语句结束
  • CALL proc_initData();
    在定义好该存储过程后,执行调用
  • DELIMITER ;
    恢复分隔符为默认的 ;

存储过程其他知识点:

  • 查询存储过程
    show procedure status where db='数据库名';
  • 查询存储过程的定义语句
    show create procedure 数据库.存储过程名;
  • 存储过程的参数使用
    存储过程中的参数分别是 in,out,inout三种类型;
    • in代表输入参数(默认情况下为in参数),表示该参数的值必须由调用程序指定。
    • ou代表输出参数,表示该参数的值经存储过程计算后,将out参数的计算结果返回给调用程序。
    • inout代表即时输入参数,又是输出参数,表示该参数的值即可有调用程序制定,又可以将inout参数的计算结果返回给调用程序。
    # (入参类型 变量名 变量类型, ...)
    create procedure proc_initData(in i_int int,  out o_varchar varchar(255))
    

对随机数的额外说明

  • FLOOR(n)
    对传入的 数值n 进行向下取整
  • RAND(seed)
    生成一个 0~1 的随机数, 传入的参数seed是随机数种子,一般可以不用传

由 floor() 和 rand() 配合使用可以随机生成任何区域值:

# 生成一个 0 ~ 100 的数
floor(rand()*100)
# 生成一个 0 ~ 12 的数
floor(rand()*12)
# 生成一个 5~95 的数
floor(5+rand()*90)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值