• 流程控制语句【循环、条件】


    阅读目录

     

    --简单循环

    复制代码
    declare                    --声明
      mynum number(3) := 0;    
    begin
      loop
        mynum := mynum + 1;
        dbms_output.put_line(mynum);
        exit when mynum = 200; --退出循环条件
      end loop;
    end;
    复制代码

    --while循环

    复制代码
    declare
      i number := 1;
    begin
      while i <= 100 loop  --执行循环条件       
        dbms_output.put_line(i);
        i := i + 1;
      end loop;
    end;
    复制代码

    --for循环

    begin
      for i in 1 .. 10 loop
        dbms_output.put_line(i);
      end loop;
    end;

    --goto循环

    复制代码
    declare
       i number := 1;
    begin
       loop 
         dbms_output.put_line('i:'||i);
         i := i + 1;
       if i > 100 then
           goto biaoji;
       end if;
       end loop;
       <<biaoji>>
         dbms_output.put_line('i:'||i);
    end;
    复制代码

    --if条件语句

    复制代码
    declare
      v_value1 number := 20;
    begin
      if v_value1 < 10 then
        dbms_output.put_line('v_value1小于10');
      elsif v_value1 < 20 then  --注意elsif 不是 else if
        dbms_output.put_line('v_value1小于20');
      else
        dbms_output.put_line('v_value1大于或等于20');
      end if;
    end;
    复制代码

    --case when

    复制代码
    declare
      v_value1 varchar2(2) := 'A';
      v_value2 varchar2(100);
    begin
      v_value2 := case v_value1
                    when 'A' then
                     '优秀'
                    when 'B' then
                     '一般'
                    else
                     '差劲'
                  end;
      dbms_output.put_line(v_value2);
    end;
    复制代码
    复制代码
    declare
      v_value1 varchar2(2) := 'A';
      v_value2 varchar2(100);
    begin
      v_value2 := case
                    when v_value1 = 'A' then
                     '优秀'
                    when v_value1 = 'B' then
                     '一般'
                    else
                     '差劲'
                  end;
      dbms_output.put_line(v_value2);
    end;
    复制代码

    以上两种方式都是可以的,这里注意了,case when语句 始终都都返回值(这点和if条件语句不一样)。

    也可以用于查询结果和查询条件

    复制代码
    select case t.c_type
             when 'B' then
              '一般'
             when 'A' then
              '优秀'
             else
              '差劲'
           end,
           case
             when t.c_case_no = '4090003002115000012' then
              '4090003002015000012'
           end
      from tbl_claim t
     where t.c_case_no = case
             when t.c_case_no = '4090003002015000012' then
              '4090003002015000012'
           end;
    复制代码

    --decode

    decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
    select decode('A', 'B', '一般', 'A', '优秀', '差劲') from dual;

    可用于查询结果和查询条件。(但是不能像case when一样赋值)

    select decode(t.type, 'B', '一般', '差劲')
      from mytable t
     where t.c_no = decode(t.c_no, '111', '111', '222');
  • 相关阅读:
    flume,kafka不在一个内网互相打通.md
    尚硅谷Flink2020教程.md
    常用命令.md
    四象限工作效率-事件管理.md
    甘特图目标实施-进度管控.md
    PDCA循环法.md
    SMART大目标拆解小目标.md
    基于内外部竞争环境和竞争条件下的态势分析
    使用Java正则表达式批量提取文本信息
    使用markdown高效编写博客(创建标题)
  • 原文地址:https://www.cnblogs.com/yulei126/p/6790333.html
Copyright © 2020-2023  润新知