题目是要求输入学号和课程号,输出该课程分数等级。
我发现用case语句写,无论输入的学号和课程号是什么,最终都会返回else后的语句,无法根据条件进行筛选输出。而用elseif语句写就没有这个问题。
sc表中的数据
这是用elseif写的,结果是对的。
下面这是用case语句写的,结果不对。
这是为什么呢?初学,感到好奇怪。
题目是要求输入学号和课程号,输出该课程分数等级。
我发现用case语句写,无论输入的学号和课程号是什么,最终都会返回else后的语句,无法根据条件进行筛选输出。而用elseif语句写就没有这个问题。
sc表中的数据
这是用elseif写的,结果是对的。
下面这是用case语句写的,结果不对。
这是为什么呢?初学,感到好奇怪。
语法错了呗,你的 case vGrade 实际上相当于 case false ,你这样写的话,仅当 vGrade为true时才会执行,而你的vGrade 是个数字,所以通过不了,直接走else了 要么直接 case when ..else 要么你就 case true when ..else,才能保证不走else
case
when vGrade is null then set vRank='-';
when vGrade>=90then set vRank='A';
when vGrade>=80 then set vRank='B' ;
when vGrade>=70 then set vRank='C' ;
when vGrade>=60 then set vRank='D' ;
else set vRank='F';
END case;