业务逻辑的存储过程(添加学生的案例)(自动编号)

 1 -- 带业务逻辑的存储过程
 2 
 3 -- 建表
 4 create table student(
 5 sid varchar(8) primary key,
 6 sname varchar(10),
 7 sex varchar(2),
 8 age int,
 9 classno varchar(6)
10 );
11 -- 表中的数据
12 insert into student values
13 ('20170101','张石瑞','','19','201701'),
14 ('20170201','李佛','','20','201702'),
15 ('20170202','王法无','','19','201702')
16 
17 -- 创建存储过程
18 create procedure addStu(sname1 varchar(20),sex1 varchar(1), age1 int,classno1 varchar(6))
19 begin
20 declare nsid varchar(8);
21 -- 根据给的 classno1 参数,查询该班级目前的最大编号
22 select sid into nsid from student where sid like concat(classno1,'%') order by sid desc limit 0,1;
23         if nsid is null THEN
24             set nsid=concat(classno1,'01');
25         else 
26             set nsid=nsid+1;
27         end if;
28 insert student values(nsid,sname1,sex1,age1,classno1);
29 select "添加成功!";
30 end
31 
32 -- 执行存储过程
33 call addStu('新生3','','19','201702');
34 
35 -- 删除存储过程
36 drop procedure if exists addStu
37 
38 -- 关键字的解释:
39 /*
40 concat(classno1,'%') 根据 classno1 进行模糊查询
41 order by sid desc 根据 sid 进行降序排列
42 limit 0,1 意思是 去掉前面 0 条数据 显示一条数据 
43 */

 

posted @ 2017-05-08 17:45  吕恒  阅读(428)  评论(0编辑  收藏  举报