MySQL数据库 *实验18错误处理
期末考核快要来了,好紧张鸭
一、实验目的
- 掌握存储过程中的异常声明
- 当存储过程执行出现异常时,会处理异常
二、实验准备
上次实验17已经设计了一个main过程,它能实现以下功能
- 创建表xs1
- 调用get_name过程得到随机生成的姓名和性别
- 通过循环语句将10000个学生的学号、姓名、性别插入到xs1表中
- 查看xs1表的记录
三、实验内容
复制和修改main过程,另存为main2过程,在main2存储过程中需要增加这些内容
- 声明异常
- 用创建xs1表同样的方式创建表xs2
- 给xs2表的姓名列添加唯一索引
- 调用get_name过程得到随机生成的姓名和性别
- 通过循环语句将1000个学生的学号、姓名、性别插入到xs2表中(由于姓名列增加了唯一索引,当插入的姓名与已有的姓名重复时会出现异常)
- 当出现异常时,显示xh、xm和出错信息(出错信息为‘重名了’)
- 循环结束后查看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错误处理相关推荐
- mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)
文章目录 mysql数据库实验--建表准备 1.dos界面中数据库的登录操作 #这里解决一个bug 2.数据库及表格创建 (1)利用sql语句创建数据库DBtest (2)表格创建 3.导入数据至数据 ...
- MySQL数据库实验二 数据基本查询
★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握SQL查询语句的一般格式 ...
- MySQL数据库实验五 触发器和存储过程
★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握某主流DBMS支持的SQ ...
- linux连接mysql数据库出现1405错误原因的一些解决方法
linux连接mysql数据库出现1405错误原因的一些解决方法 在使用yum于腾讯云服务器安装了mysql之后,从家里的电脑尝试连接mysql数据库的时候,就出现了1405错误,经过我不断地查找资料 ...
- mysql数据库报1205错误的解决方法
mysql数据库报1205错误的解决方法 解决办法 解决办法 查看数据库的进程表 show full processlist; 查看事物表 select* from information_schem ...
- MySQL数据库实验六 简单数据库应用系统设计与实现
★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.理解并能运用数据库设计的常见 ...
- mysql数据库实验报告一
实验报告一 前言 实验操作指导 解决方法 实验目的 实验内容及操作步骤 实验遇到的问题及体会 前言 <数据库原理I>实验指导书 实验课程性质:非独立开课 开课学期:第4学期 适用专业:计算 ...
- mysql数据库实验查询_MySQL数据库表数据的查询操作实验
实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...
- mysql数据库实验实训5,数据查询yggl数据库查询(详细)
数据库实验yggl数据库,实训5(详细版) 1.SELECT语句的基本使用: 1-1:查询employees 表的员工部门号和性别,要求消除重复行 select distinct '员工部门号','性 ...
最新文章
- Scrum指南新版发布,再添新概念—Product Goal
- 探索未知种族之osg类生物---起源
- NTU 笔记 6422quiz 复习(1~3节)
- linux kernel变长数组使用示例
- FLEX:使用setTimeout,setInterval ,实现sleep功能(转)
- c++编写托管dll_教程:如何编写简单的网站并免费托管
- Office web app server2013详细的安装和部署
- Python重写C语言程序100例--Part6
- 当我们在讨论机器学习时我们在说些什么?
- 程序查询方式、程序中断方式和DMA方式
- 充电识别过程及QC2.0
- C++ sort函数(升序降序排列)
- win7隐藏任务栏图标和通知
- 数字电路之Verilog红绿灯设计
- python 获取本机IP地址
- 微信小程序怎么上架和发布商品?
- base 64 转码解码 表情包emoji转码
- 信息学奥赛一本通 2036:【例5.3】开关门
- 2017高考 安防人做了这么多意想不到的
- python与php做网站_学Python对做网站用处大吗?
热门文章
- 基于Spring Boot的物品租赁系统
- 设计一个简易模糊查询输入框(上)
- 建站老鹰主机(Hawkhost)
- python什么是多态_Python中的多态是什么
- go语言批量写入mysql, 记录不存在insert, 已存在则update
- miniblink C#版使用教程
- 学学jscode的超酷HTML5时钟
- Storage.setItem()
- CodeForces 630 I. Parking Lot(排列组合)
- 【07】一阶系统的阶跃响应与时间常数_低通滤波器思想