zoukankan      html  css  js  c++  java
  • SQL游标造数据

    BEGIN
    /*用于在姓名背后添加编号,并且记录循环次数*/
    DECLARE i INT DEFAULT 0;
    /*创建变量done,done=0表示还没有检索完,done=1表示检索完成*/
    DECLARE done INT DEFAULT 0;
    /*创建变量,保存查询结果中的姓名*/
    DECLARE sname VARCHAR(30) DEFAULT '';
    /*创建变量,保存插入数据中的姓名*/
    DECLARE stuname VARCHAR(30) DEFAULT '';
    /*总成绩*/
    DECLARE sco INT DEFAULT 0;
    /*学号*/
    DECLARE sid INT DEFAULT 0;

    /*为查询语句创建游标mycursor,用来检索查询结果*/
    DECLARE mycursor CURSOR FOR SELECT student.sid,student.Sname,sum(score.score) from student LEFT JOIN score ON student.sid=score.sid GROUP BY student.sid;
    /*每一次检索,都判断是否检索到记录,如果没有,则设置done=1,表示检索完成*/
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
    /*打开游标,开始检索*/
    OPEN mycursor;
    /*循环,检索操作*/
    REPEAT
    /*将检索的内容,保存到变量*/
    FETCH mycursor INTO sid,sname,sco; /*基于需要制造的数据的条数,进行内层循环,将姓名背后根据循环次数加上数字,并且将分数加上循环次数,插入到数据表中*/
    while i < times DO
    /*基于读取出的学生名进行拼接,拼接出刘一1这样的格式*/
    set stuname=CONCAT(sname,i);
    /*向结果表中插入数据,如果已经存在记录,则更新*/
    INSERT INTO CScore VALUES (0,stuname,sco+i);
    /*循环控制变量i自增*/
    set i=i+1;
    /*while循环体结束*/
    end WHILE;
    set i=0;
    /*如果done=1,执行完成,则停止循环*/
    UNTIL done END REPEAT;
    /*关闭游标*/
    CLOSE mycursor;

    END

  • 相关阅读:
    消息队列 RPC之间的区别与联系
    RabbitMQ, ZeroMQ, Kafka 是一个层级的东西吗, 相互之间有哪些优缺点?
    嵌入式软件开发工程师谈软件架构的设计
    值得推荐的C/C++框架和库 (真的很强大)
    10.2-嵌入式系统库资源集合
    正则表达式
    vscode代码阅读
    vscode配置
    VSCode的开发环境zsESampleLinux
    MySQL与宿主Linux之间交互式执行命令
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/12978601.html
Copyright © 2011-2022 走看看