Oracle之PL/SQL流程控制

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 ifend;
View Code

  注意:关键字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;
View Code

  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;
View Code

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;
View Code

  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;
View Code

  2.3 For

    [<<标签>>] for 循环计数器 in [ REVERSE ] 下限 .. 上限 loop

          循环体语句;

    end loop [<<标签>>];

begin
    for i in 1..3 loop
        dbms_output.put_line(i);
    end loop;        
end;
    
View Code
原文地址:https://www.cnblogs.com/ZJ199012/p/11624037.html