期末考核快要来了,好紧张鸭

一、实验目的

  • 掌握存储过程中的异常声明
  • 当存储过程执行出现异常时,会处理异常

二、实验准备

上次实验17已经设计了一个main过程,它能实现以下功能

  1. 创建表xs1
  2. 调用get_name过程得到随机生成的姓名和性别
  3. 通过循环语句将10000个学生的学号、姓名、性别插入到xs1表中
  4. 查看xs1表的记录

三、实验内容

复制和修改main过程,另存为main2过程,在main2存储过程中需要增加这些内容

  1. 声明异常
  2. 用创建xs1表同样的方式创建表xs2
  3. 给xs2表的姓名列添加唯一索引
  4. 调用get_name过程得到随机生成的姓名和性别
  5. 通过循环语句将1000个学生的学号、姓名、性别插入到xs2表中(由于姓名列增加了唯一索引,当插入的姓名与已有的姓名重复时会出现异常)
  6. 当出现异常时,显示xh、xm和出错信息(出错信息为‘重名了’)
  7. 循环结束后查看xs2表的记录

本存储过程核心流程图如图1所示。

get_word过程delimiter $$
drop procedure if exists get_word;
create procedure get_word(in s char(100),out w char(1))
begin
declare len tinyint;
set len = char_length(s);
set @a = floor(rand()*(len+1)+1);
set w = substring(s,@a,1);
end $$
delimiter ;no.1 以下是一个过程get_a_character的部分代码,需要大家完善代码。该过程实现输入任意一个字符串(s),该过程执行后从s字符串中任意抽取一个字符,并将此字符返回给变量w.可以通过以下语句测试get_word过程是否编写成功.delimiter $$
drop procedure if exists get_a_character;
create procedure  get_a_character(in s char(100),out w char(1))
begin
call get_word(s,w);
end  $$
delimiter ;
set @x = '刘王张赵李钱朱何孙曾陈吴黄刘邓周毛江胡';call get_a_character(@x,@k);
select @k;no.2 编写存储过程get_name,该过程根据cd变量的值判断名字是1字还是2字,再根据xb的值判断m是取m2(男)的值还是取m1(女)的值delimiter $$
drop procedure if exists get_name;
create procedure  get_name(out m varchar(2),out xb int)
begin
declare cd int;
declare ms1,ms2 varchar(50);
declare m1,m2,m3 varchar(2);
set ms1='依秋香巧紫萱莉玉碧丽念雅红燕艳莲荷蕾紫莹颖琪';
set ms2='澄德海超阳昌瀚亮锋涵煦杰俊诚毅峰衍浩广邈言博畅';
set xb = floor(rand()*2);
set cd = floor(rand()*2+1);if  xb = 0 thencall get_word(ms1,m1); call get_word(ms1,m2); set m3 = concat(m1,m2);elseif xb = 1 thencall get_word(ms2,m1); call get_word(ms2,m2); set m3 = concat(m1,m2);end if;if cd = 1 then set m = m1;elseif cd = 2 then set m = m3;end if;
end $$
delimiter ;
call get_name(@name,@sex);
select @name,@sex;no.3 main2 过程delimiter $$
drop procedure if exists main2;
create procedure main2()
begin
declare x varchar(100);
declare xing,ming,xm varchar(3);
declare sex,n,f int;
declare xh varchar(8);
declare continue handler for sqlexception set f=2;
drop table if exists xs2;
create  table xs2 as select 学号,姓名,性别 from xs limit 0 ;
create unique index index_name on xs2(姓名);
set xh = '191100';
while xh<='191999' docall get_a_character(@x,@k);set xing = @k;call get_name(@name,@sex);set ming = @name;set sex = @sex;set xm = concat(xing,ming);insert into xs2 values(xh,xm,sex);if f=2 then select xh,xm,'重名了';set f=1;
elseif f=1 thenset xh = xh+1;end if;
end while;
end $$
delimiter ;
call main2();
select * from xs2;

加油鸭,我们会到达梦想的彼岸的,对吧!

MySQL数据库 *实验18错误处理相关推荐

  1. mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)

    文章目录 mysql数据库实验--建表准备 1.dos界面中数据库的登录操作 #这里解决一个bug 2.数据库及表格创建 (1)利用sql语句创建数据库DBtest (2)表格创建 3.导入数据至数据 ...

  2. MySQL数据库实验二 数据基本查询

    ★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握SQL查询语句的一般格式 ...

  3. MySQL数据库实验五 触发器和存储过程

    ★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握某主流DBMS支持的SQ ...

  4. linux连接mysql数据库出现1405错误原因的一些解决方法

    linux连接mysql数据库出现1405错误原因的一些解决方法 在使用yum于腾讯云服务器安装了mysql之后,从家里的电脑尝试连接mysql数据库的时候,就出现了1405错误,经过我不断地查找资料 ...

  5. mysql数据库报1205错误的解决方法

    mysql数据库报1205错误的解决方法 解决办法 解决办法 查看数据库的进程表 show full processlist; 查看事物表 select* from information_schem ...

  6. MySQL数据库实验六 简单数据库应用系统设计与实现

    ★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.理解并能运用数据库设计的常见 ...

  7. mysql数据库实验报告一

    实验报告一 前言 实验操作指导 解决方法 实验目的 实验内容及操作步骤 实验遇到的问题及体会 前言 <数据库原理I>实验指导书 实验课程性质:非独立开课 开课学期:第4学期 适用专业:计算 ...

  8. mysql数据库实验查询_MySQL数据库表数据的查询操作实验

    实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...

  9. mysql数据库实验实训5,数据查询yggl数据库查询(详细)

    数据库实验yggl数据库,实训5(详细版) 1.SELECT语句的基本使用: 1-1:查询employees 表的员工部门号和性别,要求消除重复行 select distinct '员工部门号','性 ...

最新文章

  1. Scrum指南新版发布,再添新概念—Product Goal
  2. 探索未知种族之osg类生物---起源
  3. NTU 笔记 6422quiz 复习(1~3节)
  4. linux kernel变长数组使用示例
  5. FLEX:使用setTimeout,setInterval ,实现sleep功能(转)
  6. c++编写托管dll_教程:如何编写简单的网站并免费托管
  7. Office web app server2013详细的安装和部署
  8. Python重写C语言程序100例--Part6
  9. 当我们在讨论机器学习时我们在说些什么?
  10. 程序查询方式、程序中断方式和DMA方式
  11. 充电识别过程及QC2.0
  12. C++ sort函数(升序降序排列)
  13. win7隐藏任务栏图标和通知
  14. 数字电路之Verilog红绿灯设计
  15. python 获取本机IP地址
  16. 微信小程序怎么上架和发布商品?
  17. base 64 转码解码 表情包emoji转码
  18. 信息学奥赛一本通 2036:【例5.3】开关门
  19. 2017高考 安防人做了这么多意想不到的
  20. python与php做网站_学Python对做网站用处大吗?

热门文章

  1. 基于Spring Boot的物品租赁系统
  2. 设计一个简易模糊查询输入框(上)
  3. 建站老鹰主机(Hawkhost)
  4. python什么是多态_Python中的多态是什么
  5. go语言批量写入mysql, 记录不存在insert, 已存在则update
  6. miniblink C#版使用教程
  7. 学学jscode的超酷HTML5时钟
  8. Storage.setItem()
  9. CodeForces 630 I. Parking Lot(排列组合)
  10. 【07】一阶系统的阶跃响应与时间常数_低通滤波器思想