PL/SQL这个if-then语句有效吗?

PL/SQL这个if-then语句有效吗?,sql,if-statement,plsql,oracle10g,Sql,If Statement,Plsql,Oracle10g,如果p_CreditHour介于0和30之间(包括),系统会在屏幕上打印该学生是新生;如果在31到60学分之间,打印此学生是大二学生,在61到90学分之间,打印此学生是大三学生;超过91学分,该学生是一名高年级学生 以下程序是否反映了前一个问题的逻辑 IF credit <= 30 THEN dbms_output.putline ('This student is a Freshmen'.); END IF; IF credit <= 60 THEN dbms_

如果p_CreditHour介于0和30之间(包括),系统会在屏幕上打印该学生是新生;如果在31到60学分之间,打印此学生是大二学生,在61到90学分之间,打印此学生是大三学生;超过91学分,该学生是一名高年级学生

以下程序是否反映了前一个问题的逻辑

IF credit <= 30 THEN
     dbms_output.putline ('This student is a Freshmen'.);
END IF;
IF credit <= 60 THEN
     dbms_output.putline ('This student is a
Sophomore.');
END IF;
IF credit <= 90 THEN
     dbms_output.putline ('This student is a Junior.');
END IF;
IF credit > 90 THEN
     dbms_output.putline ('This student is a Senior.');
END IF;

不会,因为15比30、60和90小,所以学生应该是弗雷克曼、大二和大三。但Oracle有一个ELSIF,您应该使用:

IF credit <= 30 THEN
     dbms_output.putline ('This student is a Freshmen'.);
ELSIF credit <= 60 THEN
     dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 THEN
     dbms_output.putline ('This student is a Junior.');
ELSE
     dbms_output.putline ('This student is a Senior.');
END IF;

不会,因为15比30、60和90小,所以学生应该是弗雷克曼、大二和大三。但Oracle有一个ELSIF,您应该使用:

IF credit <= 30 THEN
     dbms_output.putline ('This student is a Freshmen'.);
ELSIF credit <= 60 THEN
     dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 THEN
     dbms_output.putline ('This student is a Junior.');
ELSE
     dbms_output.putline ('This student is a Senior.');
END IF;

或者,还有案例陈述

begin 
  for s in ( select 1 student, 25 credits from dual union all 
             select 2 student, 35 credits from dual union all 
             select 3 student, 65 credits from dual union all 
             select 4 student, 85 credits from dual union all 
             select 5 student, 95 credits from dual 
           ) 
    loop 
      dbms_output.put( 'Student ' || to_char(s.student) || ' is a ');
      case  when s.credits <= 30 then dbms_output.put_line(' Freshman.');
            when s.credits <= 60 then dbms_output.put_line(' Sophomore.');
            when s.credits <= 90 then dbms_output.put_line(' Junior.');
            else  dbms_output.put_line(' Senior.');
      end case;
    end loop; 
end;
IF credit <= 30 THEN
 dbms_output.putline ('This student is a Freshmen'.);
ElSIF credit <= 60 AND credit > 30 THEN
 dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 AND credit > 60 THEN
 dbms_output.putline ('This student is a Junior.');
ELSE
 dbms_output.putline ('This student is a Senior.');
END IF;

或者,还有案例陈述

begin 
  for s in ( select 1 student, 25 credits from dual union all 
             select 2 student, 35 credits from dual union all 
             select 3 student, 65 credits from dual union all 
             select 4 student, 85 credits from dual union all 
             select 5 student, 95 credits from dual 
           ) 
    loop 
      dbms_output.put( 'Student ' || to_char(s.student) || ' is a ');
      case  when s.credits <= 30 then dbms_output.put_line(' Freshman.');
            when s.credits <= 60 then dbms_output.put_line(' Sophomore.');
            when s.credits <= 90 then dbms_output.put_line(' Junior.');
            else  dbms_output.put_line(' Senior.');
      end case;
    end loop; 
end;
IF credit <= 30 THEN
 dbms_output.putline ('This student is a Freshmen'.);
ElSIF credit <= 60 AND credit > 30 THEN
 dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 AND credit > 60 THEN
 dbms_output.putline ('This student is a Junior.');
ELSE
 dbms_output.putline ('This student is a Senior.');
END IF;

也可以使用ADD语句

begin 
  for s in ( select 1 student, 25 credits from dual union all 
             select 2 student, 35 credits from dual union all 
             select 3 student, 65 credits from dual union all 
             select 4 student, 85 credits from dual union all 
             select 5 student, 95 credits from dual 
           ) 
    loop 
      dbms_output.put( 'Student ' || to_char(s.student) || ' is a ');
      case  when s.credits <= 30 then dbms_output.put_line(' Freshman.');
            when s.credits <= 60 then dbms_output.put_line(' Sophomore.');
            when s.credits <= 90 then dbms_output.put_line(' Junior.');
            else  dbms_output.put_line(' Senior.');
      end case;
    end loop; 
end;
IF credit <= 30 THEN
 dbms_output.putline ('This student is a Freshmen'.);
ElSIF credit <= 60 AND credit > 30 THEN
 dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 AND credit > 60 THEN
 dbms_output.putline ('This student is a Junior.');
ELSE
 dbms_output.putline ('This student is a Senior.');
END IF;

也可以使用ADD语句

begin 
  for s in ( select 1 student, 25 credits from dual union all 
             select 2 student, 35 credits from dual union all 
             select 3 student, 65 credits from dual union all 
             select 4 student, 85 credits from dual union all 
             select 5 student, 95 credits from dual 
           ) 
    loop 
      dbms_output.put( 'Student ' || to_char(s.student) || ' is a ');
      case  when s.credits <= 30 then dbms_output.put_line(' Freshman.');
            when s.credits <= 60 then dbms_output.put_line(' Sophomore.');
            when s.credits <= 90 then dbms_output.put_line(' Junior.');
            else  dbms_output.put_line(' Senior.');
      end case;
    end loop; 
end;
IF credit <= 30 THEN
 dbms_output.putline ('This student is a Freshmen'.);
ElSIF credit <= 60 AND credit > 30 THEN
 dbms_output.putline ('This student is a Sophomore.');
ELSIF credit <= 90 AND credit > 60 THEN
 dbms_output.putline ('This student is a Junior.');
ELSE
 dbms_output.putline ('This student is a Senior.');
END IF;