简单的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;

原文地址:https://www.cnblogs.com/mtfan01/p/9441904.html

时间: 2024-10-09 17:57:07

简单的mysql存储过程的相关文章

Mysql存储过程(转)

一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b",返回这两个参数的和. drop procedure if exists pr_add; -- 计算两个数之和 create procedure pr_add(   a int,   b int)begin   declare c int; if a is null then      set a = 0; 

Mysql 存储过程基本语法

delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: create procedure sp_name() begin ......... end 2.参数传递 二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三.删除存储过程 1.基本语法: drop procedure sp_nam

Mysql存储过程入门介绍

delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: create procedure sp_name()begin.........end 2.参数传递 二.调用存储过程 1.基本语法:call sp_name()注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 三.删除存储过程 1.基本语法:drop procedure sp_name//2.

mysql 存储过程简单学习

转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合,将这些sql命令有组织的形成一个小程序,这样会实现很复杂的处理 SQL基本是一个命令一个命令执行,虽然可以通过连接.子查询等实现些高级的处理,但局限性是显而易见的 ■存储过程的优势 1.提高执行性能(存储过程事先完成了解析.编译的处理,执行时能减轻数据库负担) 2.可减轻网络负担(比起多次传递SQ

MySql存储过程简单实例

转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 *****************************/ delimiter // DROP TABLE if exists test // CREATE TABLE test( id int(11) NULL ) // /********************** 最简单的一个存储过程 **********************/ dr

mysql 存储过程

按照百度百科的介绍:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. mysql 中的存储过程的实现是在mysql 5.0 版本中引进的,下面简单介绍mysql中的存储过程基本语法和使用场合. DELIMITER // CREATE PROCEDURE GetA

MySQL存储过程定义及调用

#MySQL存储过程 ##最简单的存储过程 DROP PROCEDURE IF EXISTS sp1; CREATE PROCEDURE sp1() COMMENT '最简单的存储过程' SELECT 1; ##调用 CALL sp1 (); ##带输入参数的存储过程 DROP PROCEDURE IF EXISTS sp2; CREATE PROCEDURE sp2(IN p INT) COMMENT '带输入参数的存储过程' SELECT p; ##调用 CALL sp2(1); #带输出参

MySQL存储过程详解 mysql 存储过程

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保

MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)

转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和