zoukankan      html  css  js  c++  java
  • Mysql存储过程中使用cursor

    一、表
    学生表
    CREATE TABLE `t_student` (
       `stuNum` int(11) NOT NULL auto_increment,
       `stuName` varchar(20) default NULL,
       `birthday` date default NULL,
       PRIMARY KEY  (`stuNum`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    学生分数表
    CREATE TABLE `t_stu_score` (
       `id` int(11) NOT NULL auto_increment,
       `stuNum` int(11) default NULL,
       `score` decimal(6,2) default NULL,
       PRIMARY KEY  (`id`),
       KEY `FK_t_stu_score` (`stuNum`),
       CONSTRAINT `FK_t_stu_score` FOREIGN KEY (`stuNum`) REFERENCES `t_student` (`stuNum`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    学生具体表
    CREATE TABLE `t_stu_detail` (
       `id` int(11) NOT NULL auto_increment,
       `stuName` varchar(20) default NULL,
       `score` decimal(6,2) default NULL,
       PRIMARY KEY  (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    将t_Student和t_stu_score表中满足一定条件的数据插入到t_stu_detail中。


    二、过程
    DELIMITER &&
     CREATE PROCEDURE proc_AddStuDetail( IN p_score DECIMAL(6,2) )
      BEGIN
    DECLARE vstuNum INT;
    DECLARE vstuName VARCHAR(20);
    DECLARE vbirthday DATE;
    DECLARE vscore DECIMAL(6,2);
    DECLARE done INT;

    -- 定义游标
    DECLARE stuCursor CURSOR
    FOR
    SELECT stuNum,stuName,birthday FROM t_Student;

    -- 定义结束标记
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    -- 打开游标
    OPEN stuCursor;

    -- 循环
    stuLoop:LOOP
    -- 取游标中的数据
    FETCH stuCursor INTO vstuNum,vstuName,vbirthday;
    IF done = 1 THEN
    LEAVE stuLoop;
    END IF;

    IF DATE(vbirthday) >= '1990-03-01' THEN
    SELECT score INTO vscore FROM t_stu_score WHERE stuNum = vstuNum;
    IF vscore >= p_score THEN
    INSERT INTO t_stu_detail VALUES(NULL,vstuNum,vscore);
    END IF;
    END IF;
    END LOOP stuLoop;

    -- 关闭游标
    CLOSE stuCursor;
      END
    &&
    DELIMITER ;

    三、调用过程
    CALL proc_AddStuDetail(86);
  • 相关阅读:
    《舌尖上的中国》精彩故事
    5年前的笔试题目
    遍历物理模型中的所有表,将表名、表代码、字段名、字段代码全部由小写改成大写
    MongoDB下载文件 百度盘共享
    认识MEAN开发框架[转]
    智能油田
    排课相关参数设置
    spring获取所有被装配类工具
    oracle常用sql集锦
    关于使用easyUI遇到过的一些坑
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7236291.html
Copyright © 2011-2022 走看看