本帖最后由 广州30班陈俊述 于 2021-6-16 20:56 编辑
mysqld的存储过程
drop procedure if exists dcs30; #删除存储过程,如果存在dcs30 增加程序的健壮性 create procedure dcs30(i int) #创建存储过程, 命名为dcs30 begin # 开始 #写相关的SQL语句结合,需要重复执行的多条SQL语句 declare n int default(select count(*) from mm); # 删除表 如果存在mm表 增加程序的健壮性 #定义一个变量 n 类型为int, 默认值为(统计mm表行数) declare m int default''; #注意定义变量 m 类型为int, 默认值为 空 declare o int default(select max(score) from mm); #注意定义变量的SQL语句必须要写在存储过程中所有SQL语句最前面 drop table if exists mm; # 删除表 如果存在mm表 create table mm(id int (10) primary key auto_increment,score int (10));
insert into mm values (1,99),(2,88); insert into mm values (3,97),(4,85); insert into mm values (5,96),(6,86); insert into mm values (7,95),(8,84); -- select *from mm where id=j; 带参数进行查询操作 -- select *from mm where id=i; 带参数进行查询操作 -- desc mm; /* if i=0 then # if判断语句的单分支 if判断的多分支,注意有多少个if 就要有多少个end if; select count(*) from mm; else select * from mm where id=i; end if; */ if i=0 then select count(*) from mm; else if i>0 && i<=n then select *from mm where id=i; 带参数进行查询操作 else if i>n then while i>n do #10>8进入循环 10>(8+1=9)进入循环 10>(8+1+1=10)不满足退出循环 set o=o+1; insert into mm(score) values(49); 条件满足的时候就进入while 循环,条件不满足就退出while循环, 怎么让条件不满足? set n=n+1; 可以在while循环里面设置每次结束循环之前都设置一下条件的值+1(set n=1) while 条件 do 之后需要 使用end while 结束循环判断
end while; else select *from mm; end if; end if;
|