找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
1、单分支
if + 条件 then
执行sql1
else
执行sql2

问:创建一个存储过程:
1、如果输入是0,就统计aa表中的数据量
2、如果不是0,就按照成绩倒序排列

伪代码写法
if 如果n是0,然后
统计aa表中的数据量
else(只要n不是0的情况,统一归属到这个场景)
按照成绩倒序排列
end if (结束这个判断语句)
DROP PROCEDURE if EXISTS dcs20; #在执行创建新的存储过程之前,把原有的存储过程删除,保证健壮性
create PROCEDURE dcs20(n int)  #创建存储过程,n是变量,int 是变量的数据类型
BEGIN#开始
drop table if EXISTS aa;#如果存在aa表就删除
create table aa(id int(5)PRIMARY key auto_increment,score int(5));
INSERT into aa VALUES(1,88),(2,75),(3,79),(4,95),(5,85),(6,63),(7,90),(8,99);

#单分支 if 判断语句
if n=0 then
SELECT COUNT(*) FROM aa;
else
SELECT * from aa ORDER BY  score deSC;
end if;
end #存储过程结束
call dcs20(7)


2、 多分支的判断
if + 条件 then
执行sql1
else if + 条件 then
执行sql2
else if + 条件 then
执行sql3
........
else
end if;
end if;
end if;

伪代码写法:
if n =0 然后
就统计aa表中有多少数据
else if n>0 且n<=8 然后
将aa表中的数据按照成绩降序排列
else if n > 8 然后
求出aa表中的成绩最大值
else (其他情况)
查出aa表所有的数据
end if;
end if;
end if; (有多少个if,就要写多少个end if)

if n=0 then
select count(*) from aa;
else if n>0 and n <= 8 then
select * from order by score desc;
else if n>8 then
select max(score) from aa;
else
select * from aa;
end if;
end if;
end if;
end



问:创建一个存储过程:
1、如果输入的数字n=0,就统计aa表中有多少数据
2、如果输入的数字0<n<8 ,就把aa表中的数据,按照成绩降序排列
3、如果输入的数字n> 8 ,就求出表中成绩的最大值



3、条件语句
while + 条件 do
执行sql
end while
注意:
什么时候进入循环 当条件成立时,进入循环
什么时候推出循环:当条件不成立时,退出循环

问:创建一个存储过程:
1、如果n=0 统计aa表中的数据量
2、如果n!=),小于表的行数,就把aa表按照成绩倒序排序
3、如果n大于表的行数,就把数据补到n行,成绩录入88

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册