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 */