zoukankan      html  css  js  c++  java
  • 简单的mysql存储过程

    1.我为啥会学mysql存储过程?

           因为在之前工作不懂存储过程,没有及时发现bug,后面就花一个月的时间学习mysql存储过程,把公司所有的存储过程及其所有表都弄懂了。然而尴尬的是,在一次面试时面试官要我手写一个存储过程,我既然写不出来。

    2.很多东西学会了不经常用就容易忘记,建议大家学会的东西时不时拿出来练练手。

    下面就是我写来玩的存储过程

    1)创建两张表

    CREATE TABLE `mtfan` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `name` varchar(60) DEFAULT NULL COMMENT '姓名',
      `money` varchar(60) DEFAULT NULL COMMENT '钱',
      `date_1` date DEFAULT NULL COMMENT '时间',
      PRIMARY KEY (`id`)
    );

    CREATE TABLE `mtfan01` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `name` varchar(60) DEFAULT NULL COMMENT '姓名',
      `money` varchar(60) DEFAULT NULL COMMENT '钱',
      `date_1` date DEFAULT NULL COMMENT '时间',
      PRIMARY KEY (`id`)
    );

    2)创建一个存储过程,向mtfan表里插入数据

    CREATE  PROCEDURE `inout_param`()
    BEGIN
            declare i int default 0;
            declare money int ;

            loop_label: loop
        set money = FLOOR( 500 + RAND() * (1000 - 500));

        INSERT INTO mtfan (name,money,date_1) VALUES('小明',money,'2018-07-30');
            INSERT INTO mtfan (name,money,date_1) VALUES('小红',money,'2018-07-30');
            INSERT INTO mtfan (name,money,date_1) VALUES('小猪',money,'2018-07-30');
            INSERT INTO mtfan (name,money,date_1) VALUES('小李',money,'2018-07-30');
            INSERT INTO mtfan (name,money,date_1) VALUES('小国',money,'2018-07-30');
            
        set i=i+1;
            if i>=5 then
               leave loop_label;
            end if;
        end loop;
    END;

    3)创建一个游标存储过程,把mtfan表里的数据传给mtfan01表

    CREATE  PROCEDURE `cursor_example`()
    BEGIN
             #定义函数
         DECLARE cnname VARCHAR(20) DEFAULT '';
         DECLARE cnmoney INT DEFAULT 0;  
         DECLARE date DATETIME DEFAULT '2018-08-01';  
         DECLARE done INT DEFAULT 0;
             #创建一个游标
         DECLARE cur1 CURSOR FOR SELECT name,money,date_1 FROM mtfan WHERE date_1 = '2018-07-10';
             #设置变量 done=1时跳出循环
         DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;  
             #打开游标
         OPEN cur1;
             #创建一个loop循环
         emp_loop: LOOP
                     #把游标查询得到的值传给对应的函数
             FETCH cur1 INTO cnname,cnmoney,date;
                     #满足条件终止循环
             IF done=1 THEN  
                 LEAVE emp_loop;
                     #if结束
             END IF;
                     #sql插入语句
                     INSERT INTO mtfan01 (name,money,date_1) VALUES(cnname,cnmoney,date);
             #循环结束
         END LOOP emp_loop;
             #关闭游标
         CLOSE cur1;  
    END;

  • 相关阅读:
    Java核心技术第四章----对象与类重难点总结
    Java核心技术第三章----Java的基本程序设计结构重难点总结
    IDEA Invalid bound statement (not found)
    安利一个免费下载VIP文档神器
    灵魂拷问--你是什么垃圾?垃圾分类找人工智障!!!让你再也不拍大妈的灵魂拷问
    JavaWeb无框架,借助反射采用精巧设计模式实现放微信PC聊天页面
    JavaWeb购物车
    来自大专生的些许感悟
    2021 第二轮省队集训 Day5
    2021 第二轮省队集训 Day2
  • 原文地址:https://www.cnblogs.com/mtfan01/p/9441904.html
Copyright © 2011-2022 走看看