1、条件分支
1.1、IF语法
begin
if 条件1 then 执行1
elsif 条件2 then 执行2
else 执行3
end if;
end;
declare --emp表中记录数 v_count number; begin select count(1) into v_count from emp; if v_count>20 then dbms_output.put_line('表中记录数超过20条,为:'||v_count); elsif v_count>=10 then dbms_output.put_line('表中记录数在10到20之间,为:'||v_count) else dbms_output.put_line('表中记录数小于10条,为:'||v_count) end if; end;
注意:关键字elsif不是elseif
1.2 Case 语法
case 条件表达式
WHEN 条件表达式结果1 THEN
语句1
WHEN 条件表达式结果2 THEN
语句2
......
WHEN 条件表达式结果n THEN
语句n
[else 条件表达式结果]
end case;
declare v_name varchar2(20); begin v_name:='zhangsan'; case v_name when 'zhangsan' then dbms_output.put_line('张三'); when 'lisi' then dbms_output.put_line('李四'); else dbms_output.put_line('无法找到改名称'); end;
case
WHEN 条件表达式1 THEN
语句1
WHEN 条件表达式2 THEN
语句2
......
WHEN 条件表达式n THEN
语句n
[else 语句]
end case;
declare v_name varchar2(20); begin v_name:='zhangsan'; case when v_name='zhangsan' then dbms_output.put_line('张三'); when v_name='lisi' then dbms_output.put_line('李四'); else dbms_output.put_line('无法找到改名称'); end;
2、循环
2.1 Loop
begin
loop
exit when 执行2 退出循环条件
end loop;
declare num number:=1; begin loop exit when num>10 dbms_output.put_line(num); num := num+1; end loop; end;
2.2 While
while <布尔表达式> loop
循环体语句;
end loop;
declare flag boolean:=TRUE; begin while flag loop dbms_output.put_line ('Hello World!'); flag:=FALSE; end loop; end;
2.3 For
[<<标签>>] for 循环计数器 in [ REVERSE ] 下限 .. 上限 loop
循环体语句;
end loop [<<标签>>];
begin for i in 1..3 loop dbms_output.put_line(i); end loop; end;