PLSQL中的循环和IF语句
我一直在尝试在PLSQL任务中使用IF-ELSE 这是我当前代码的一部分PLSQL中的循环和IF语句,plsql,Plsql,我一直在尝试在PLSQL任务中使用IF-ELSE 这是我当前代码的一部分 FETCH c2 into Mark, credit_hour; IF Mark = 'A+' THEN Points := Points + (4.0 * credit_hour); ELSIF Mark = 'A ' THEN Points := Points + (4.0 * credit_hour); ELSIF Mark = 'A-' THEN
FETCH c2 into Mark, credit_hour;
IF Mark = 'A+' THEN
Points := Points + (4.0 * credit_hour);
ELSIF Mark = 'A ' THEN
Points := Points + (4.0 * credit_hour);
ELSIF Mark = 'A-' THEN
Points := Points + (3.7 * credit_hour);
ELSIF Mark = 'B+' THEN
Points := Points + (3.3 * credit_hour);
ELSIF Mark = 'B ' THEN
Points := Points + (3.0 * credit_hour);
ELSIF Mark = 'B-' THEN
Points := Points + (2.7 * credit_hour);
ELSIF Mark = 'C+' THEN
Points := Points + (2.3 * credit_hour);
ELSIF Mark = 'C ' THEN
Points := Points + (2.0 * credit_hour);
ELSIF Mark = 'C-' THEN
Points := Points + (1.7 * credit_hour);
ELSIF Mark = 'D+' THEN
Points := Points + (1.3 * credit_hour);
ELSIF Mark = 'D ' THEN
Points := Points + (1.0 * credit_hour);
ELSEIF Mark = 'D-' THEN
Points := Points + (0.7 * credit_hour);
ELSE Mark = 'F' THEN
Points := Points + (0.0 * credit_hour);
END IF;
但是后来我想我可以通过使用双参数循环来缩短这个过程,比如
FETCH c2 into Mark, credit_hour;
for (i,k) in (A+,A,A-,B+,B,B-,C+,C,C-,D+,D,D-,F) (4.0,4.0,3.7,3.3,3.0,2.7,2.3,2.0,1.7,1.3,1.0,0.7,0.0)
IF Mark = i THEN
Points := Points + (k * credit_hour);
但我不知道如何在PLSQL中实现这一点,对于您当前的代码,我建议在时使用
案例,因为这更易于阅读:
Points := Points
+ case Mark
when 'A+' then 4.0
when 'A ' then 4.0
...
end
* credit_hour;
或者,更好的是,创建一个(临时)表来存储其中的值,并创建一个select
语句,可以选择与原始表进行连接,这样就根本不需要PL/SQL了。我还建议使用一个表,似乎是解决这个问题的更好方法。