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