1、四、实验内容及程序代码1.sch 数据表的表结构如表 7.1 所示,sch 表的数据如表 7.2。表 7.1 sch 表结构字段名 数据类型 主键 外键 非空 唯一 自增id INT(10) 是 否 是 是 否name VARCHAR(50) 否 否 是 否 否class VARCHAR(50) 否 否 是 否 否表 7.2 sch 表的内容id name class1 李明 C12 小梅 C21)建表 sch 并插入数据。2)创建一个存储函数,用来统计表 sch 中的记录数。delimiter $create PROCEDURE count_sch5(out size int)BEGINse
2、lect count(*) into size from sch;END$delimiter;3)创建一个存储过程,通过调用存储函数的方法来获取表 sch 中的记录数和 sch 表中 id 的和。delimiter $create PROCEDURE count_sch2(out s_a int,out s_id int)BEGINselect count(*) into s_a from sch;select sum(id) as s_id from sch;END$delimiter;2.创 建 一 存 储 过 程 insert_student_condition_user, 利 用 自
3、定 义 错 误 触 发 条 件 定 义 ,当 插 入 学 生 的 性 别 不 是 “男 ”或 “女 ”时 结 束 存 储 过 程 , 并 提 示 “学 生 性 别 不 正 确 ”。表 7.3 student 表结构字段名 数据类型 主键 外键 非空 唯一 自增sno Char(10) 是 否 是 是 否sname VARCHAR(20) 否 否 是 否 否ssex CHAR(2) 否 否 是 否 否Sage smallint 否 否 是 否 否Sdept VARCHAR(30) 否 否 是 否 否enterdate datetime 否 否 是 否 否delimiter $create PRO
4、CEDURE insert_student_condition_user(in sno int,in sname VARCHAR(20),in ssex varchar(2),in sage int,in sdept varchar(30)BEGINDECLARE continue handler for sqlstate 42S02 select 学 生 性 别 不 正 确 ;if ssex=男 or ssex=女 THENinsert into student values(sno,sname,ssex,sage,sdept);end if;end$ delimiter;call inse
5、rt_student_condition_user(1,pqw,他 ,20,C1);call insert_student_condition_user(4,pqw,1,20,C1);drop PROCEDURE insert_student_condition_user;3.创 建 一 存 储 过 程 update_student_borthyear, 在 学 生 表 ( 表 结 构 如 表 7.3) 中 添加 字 段 ”borthyear”( 出 生 年 份 ) , 在 存 储 过 程 中 利 用 游 标 , 通 过 学 生 年 龄 计 算 出 出生 年 份 并 修 改 表 中 对 应 字
6、 段 。create procedure update_student_borthyear(in s_no char(10)BEGINdeclare s_age char(10);declare state char(20);declare cur cursor for select sage from student;declare exit handler for 1329 set state=error;open cur;REPEATfetch cur into s_age;update student set borthyear=2018-s_age where sno=s_no;until state=errorend repeat;close cur;ENDcall update_student_borthyear(201818);mysql 语句对于大小写不敏感,所以在写的时候要注意区分,整整找了半个小时的错误。