PL/SQL 流程控制语句-条件结构,循环结构
条件结构
一、IF-THEN语句
IF-THEN语句是最简单的IF语句。
语法:
IF condition THEN Statements END IF;
例子:
declare v_score number := &成绩; begin if v_score >= 60 then dbms_output.put_line('合格'); end if; end;
二、IF-THEN-ELSE语句
与IF-THEN语句相比,在IF-THEN-ELSE语句则给出了在不满足条件时程序的外理情况。
语法:
IF condition THEN Statements1 ELSE Statements2 END IF;
例子:
declare v_score number := &成绩; begin if v_score >= 60 then dbms_output.put_line('合格'); else dbms_output.put_line('不合格'); end if; end;
三、IF-THEN-ELSIF语句
该语句是当存在多个不同条件时使用,注意此时是ELSIF,而不是ELSEIF。
语法:
IF condition1 THEN Statements1 ELSIF condition2 THEN Statements2 ELSE Statements3 END IF;
例子:
declare v_score number := &成绩; begin if v_score >= 90 then dbms_output.put_line('优秀'); elsif v_score >= 60 then dbms_output.put_line('合格'); else dbms_output.put_line('不合格'); end if; end;
四、CASE 语句
CASE语句是在Oracle 9i 版本后引入的控制语句结构。
语法:
CASE variable WHEN value1 THEN statements1; WHEN value2 THEN statements2; …… WHEN valuen THEN statementsn; [ELSE else_statements;] END CASE;
例子:
declare v_score number := &成绩; begin case v_score when 1 then dbms_output.put_line('星期一'); when 2 then dbms_output.put_line('星期二'); when 3 then dbms_output.put_line('星期三'); when 4 then dbms_output.put_line('星期四'); when 5 then dbms_output.put_line('星期五'); when 6 then dbms_output.put_line('星期六'); when 7 then dbms_output.put_line('星期日'); else dbms_output.put_line('未知'); end case; end;
循环结构
一、LOOP循环
LOOP循环是最简单的一种循环。需使用 EXIT 语句来退出循环。
语法:
LOOP statements; END LOOP;
例子:
declare v_num number := 1; begin loop dbms_output.put_line(v_num); v_num := v_num+1; if v_num>15 then exit; end if; end loop; end;
二、WHILE-LOOP 循环
WHILE-LOOP 循环是在执行循环时,先判断循环条件是否成立,当条件为TRUE时,才开始执行循环体内的语句。
语法:
WHILE condition LOOP statements; END LOOP;
例子:
declare v_num number := 1; begin while v_num<=15 loop dbms_output.put_line(v_num); v_num := v_num+1; end loop; end;
三、FOR-LOOP 循环
与WHILE-LOOP 循环相比,FOR-LOOP 循环可以清楚的知道循环的次数,并且FOR 循环还确定了循环的范围。
语法:
FOR loop_count IN [REVERSE] lower_bound..height_bound LOOP statements; END LOOP;
例子:
declare begin for i in 1..15 LOOP dbms_output.put_line(i); END LOOP; end;