• oracle中的控制语句


    一、条件语句
    1、流程控制-if else
    (1)if
    if 判断条件 then
          ...
    end if;
    (2)if-else
    if 判断条件 then
          ...
    else
          ...
    end if;
    (3)if-elsif
    if 判断条件1 then
          ...
    elsif 判断条件2 then
          ...
    elsif 判断条件n then
          ...
    end if;
    (4)if-elsif-else
    if 判断条件1 then
            ...
    elsif 判断条件2 then
            ...
    elsif 判断条件n then
            ...
    else
            ...
    end if;

    例:


    set serverout on;
    declare

          employee_number number;
    begin
         select count(*) into employee_count from employees where employee_age>30;
         if employee_count>10 then
             dbms_output.put_line('公司有年龄大于30的员工');
        else
            dbms_output.put_line('公司没有年龄大于30的员工');
        end if;
    end

    统计年龄大于30的员工信息,存在多个条件判断(elsif)时如下:

    declare

          employee_number number;
    begin
          select count(*) into employee_count from employees where employee_age>30;
          if employee_count=1 then
              dbms_output.put_line('公司有1名年龄大于30的员工');
         elsif employee_count>1 then
              dbms_output.put_line('公司有多年龄大于30的员工');
         else
             dbms_output.put_line('公司没有年龄大于30的员工');
         end if;
    end


    2、流程控制-case when
    case when 与if else 有相同的效果。当需要匹配的情况较多时,可以使流程控制更加清晰
    (1)case-when
    case expression
        when value1 then
              ...
        when value2 then
             ...
        when valuen then
             ...
    end case;
    (2)case-when-else
    case expression
        when value1 then
              ...
        when value2 then
             ...
        when valuen then
            ...
        else
           ...
    end case;

    例:


    declare employee_number number;
    begin
           select count(*) into employee_count from employees where employee_age>30;
          case employee_count
                when 1 then
                        dbms_output.put_line('公司有1名年龄大于30的员工');
                when 0 then
                        dbms_output.put_line('公司没有年龄大于30的员工');
               else
                      dbms_output.put_line('公司有多名年龄大于30的员工');
          end case
    end


    二、循环语句
    1、无条件循环-loop
    loop
        ...
    end loop;

    例:


    declare v_id number :=0;
           v_name varchar2(20);
    begin
      loop
          if v_id>=5 then
              exit;--退出循环
          end if;
          v_id:=v_id+1;

          select empolyee_name into v_name from employees where employee_id=v_id;

          dbms_output.put_line(v_id||'号员工是'||v_name);
      end loop;
    end;

    除了利用if判断退出循环外,还可以exit when的形式跳出循环


    2、while循环
    while 条件判断 loop
          循环操作
    end loop;

    while指定循环条件,其后仍然跟loop,此处的loop循环与无条件循环中的loop完全相同,只是增加了while条件而已。

    例:


    declare v_id number :=0;
           v_name varchar2(20);
    begin
    while v_id>=5
    loop

         v_id:=v_id+1;

        select empolyee_name into v_name from employees where employee_id=v_id;

         dbms_output.put_line(v_id||'号员工是'||v_name);
    end loop;
    end;


    3、for循环
    for .. in .. loop
         ...
    end loop;

    例:


    declare v_id number :=0;
            v_name varchar2(20);
    begin
    for v_id in 1..5
    loop

         v_id:=v_id+1;

         select empolyee_name into v_name from employees where employee_id=v_id;

         dbms_output.put_line(v_id||'号员工是'||v_name);
    end loop;
    end;


    4、循环控制关键字

    (1)continue:终止本次循环,进入下一次循环。

    (2)exit:终止本层循环,进入下一层循环。oracle中没有break关键字,用exit代替。

    (3)return:直接跳出存储过程或函数。

    转自:https://blog.csdn.net/qq_17503037/article/details/79261510

  • 相关阅读:
    迪杰斯特拉_优先队列 模板
    POJ3268(Dijkstra_邻接矩阵)
    Uva-10815
    Uva-10474
    同余方程
    欧几里得算法与扩展欧几里得算法
    大整数型的加法
    Uva442
    《哲学起步》读后感 读书笔记
    《论大战略》读后感 读书笔记
  • 原文地址:https://www.cnblogs.com/shujk/p/12498103.html
Copyright © 2020-2023  润新知