PLSQL中的循环和IF语句

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

我一直在尝试在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
        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了。

我还建议使用一个表,似乎是解决这个问题的更好方法。