《MySQL实验报告5存储过程与函数11.doc》由会员分享,可在线阅读,更多相关《MySQL实验报告5存储过程与函数11.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MySQL实验报告5存储过程与函数11 四、实验内容及程序代码1、sch数据表的表结构如表7、1所示,sch表的数据如表7、2表7、1 sch 表结构字段名数据类型主键外键非空唯一自增idINT(10)就是否就是就是否n ameVARCHAR(50)否否就是否否classVARCHAR(50)否否就是否否表7、2 sch表的内容idn ameclass1李明C12小梅C21)建表sch并插入数据。LMLdDdse uidriyeumysql 匚reate table sch( i d i nt(10) pri mary key,- neme varchar(50) not null,- cla
2、ss varchar(50) not nul1);Query OK, 0 rows affected (0.42 sec)mysql i nsert into sch values (1, #; 明“匚1?儿2小梅#;,rc2 r); Query OK, 2 rows affected CO.10 sec)Records: 2 Duplicates: 0 Warnings: 0创建一个存储函数,用来统计表sch中的记录数。delimiter $create PROCEDURE coun t_sch5(out size int)BEGINselect coun t(_) into size fr
3、om sch;END$delimiter;TOC o ”1-5“ h z tzmTI 1 rz sdaut住;_ _I2已 I鲁+2 I1 row i n 乞已七 0.0 s ez J3)创建一个存储过程,通过调用存储函数的方法来获取表sch中的记录数与sch表中id的与。delimiter $create PROCEDURE coun t_sch2(out s_a in t,out s_id int) BEGINselect coun t(_) into s_a from sch;select sum(id) as s_id from sch;END$delimiter;+I s_id I4
4、4I 3 I1 row in set 0.01 sec)2、创建一存储过程 in sert_stude nt_con dition_user,利用自定义错误触发条件定义当插入学生的性别不就是“男”或“女”时结束存储过程,并提示“学生性别不正确”表7、3 student表结构字段名数据类型主键外键非空唯一自增snoChar(10)就是否就是就是否sn ameVARCHAR(20)否否就是否否sse_CHAR(2)否否就是否否Sagesmalli nt否否就是否否SdeptVARCHAR(30)否否就是否否en terdatedatetime否否就是否否delimiter $create PROC
5、EDURE insert_student_condition_user(insnoint,insnameVARCHAR(20),in sse_ varchar(2),i n sage in t,i n sdept varchar(30)BEGINDECLARE continue han dler for sqlstate #;42S02#; select #;学生性别不正确 #;;if sse_=#; 男#;or sse_=#; 女#;THENinsert into stude nt values(s no,sn ame,sse_,sage,sdept);end if;end $ delimi
6、ter;她#;,20,#;C1#;);call in sert_stude nt_con diti on _user(1,#;pqw#;,#; 她#;,20,#;C1#;);drop PROCEDURE in sert_stude nt_co ndition_user;信息结栗1畴兄孚圭宓KIM卜学主性別KU确3、创建一存储过程update_student_borthyear,在学生表(表结构如表 7、3)中添加字段” borthyear ”(出生年份),在存储过程中利用游标,通过学生年龄计算出出生年份并修改表中对应字段。create procedure update_stude nt_bor
7、thyear(i n s_no char(10)BEGINdeclare s_age char(10);declare state char(20);declare cur cursor for select sage from stude nt;declare e_it han dler for 1329 set state=#;error#;ope n cur;REPEATfetch cur into s_age;update stude nt set borthyear=20_-s_age where sno=s_no;un til state=#;error#;end repeat;close cur;ENDsrosnamesse_ugesdeptsrosnamesse_ugesdeptborthyea_20_18 pqwS18Cicall update_stude nt_borthyear(20_18);mysql语句对于大小写不敏感,所以在写的时候要注意区分,整整找了半个小时的错误。第 7 页 共 7 页
限制150内