zoukankan      html  css  js  c++  java
  • Oracle基本流程语句


    ====1、IF语句==========


    declare
    a number:=1;
    begin
      if a<1 then
        dbms_output.put_line('a<1');
      elsif a=1 then
        dbms_output.put_line('a=1');
      else
        dbms_output.put_line('a=1');  
      end if;
    end;
    /

    ====2、Case语句==========


    declare
     sex number:=1;
    begin
      case sex
      when 1 then
           dbms_output.put_line('男');
      when 2 then
           dbms_output.put_line('女');
      else
           dbms_output.put_line('其它');
      end;
    end;
    /
    select stuName,
           (case
             when stuAge = 0 then '男'
             when stuAge = 1 then '女'
             else '其它性别'
           end)
      from stu2;
    /
    SELECT COUNT(CASE
                   WHEN stuAge = 0 THEN 1 /*sex 1为男生,2位女生*/
                   ELSE NULL END) 男生数,
           COUNT(CASE
                   WHEN stuAge = 1 THEN 1
                   ELSE NULL END) 女生数
    FROM stu2;
    /
                        
    ====3、Loop循环语句==========
      LOOP
               ......
                EXIT [WHEN condition];
      END LOOP;
    --例子:
      declare
        a number:=0;
      begin
        loop
          a:=a+1;
          dbms_output.put_line(a);
          exit when a=10;
        end loop;
      end;
      /
     
    ====4、While循环语句==========
    WHILE condition LOOP
               .....
    END LOOP;
    --例子:
      declare
        a number := 0;
      begin
        while a < 10 Loop
          dbms_output.put_line(a);
          a:=a+1;
        end loop;
      end;
      /
       
    ====5.FOR循环语句==========
    当使用基本循环或WHILE循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用NUMBER类型,
    也可以使用其他数据类型。当使用FOR循环时,ORACLE会隐含定义循环控制变量。

    FOR counter in [REVERSE] lower_bound. .upper_bound LOOP
             .......
    END LOOP;

    counter是循环控制变量,并且该变量由oracle隐含定义,不需要显式定义。lower_bound和upper_bound分别对应于
    循环控制变量的下界值和上界值,默认情况下,当使用FOR循环时,每次循环时循环控制变量会自动增1.
    如果指定REVERSE选项,那么每次循环时循环控制变量会自动减1。示例:  
     
    begin
      for a in reverse 1 .. 10 loop
       dbms_output.put_line(a);
      end loop;
    end;
    /
    ====6.嵌套语句==========
    ====6.嵌套语句==========
    嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于
    标记嵌套块或嵌套循环,通过在嵌套循环中使用标号,可以区分内层循环和外层循环,
    并且可以在内层循环中直接退出外层循环,在编写时可以用<<label_name>>定义标号。示例:
    declare
      result int;
    begin
      <<outer>>
      for i in 1 .. 10 loop
        <<inter>>
        for j in 1 .. 10 loop
          result := i + j;
          exit outer when result > 50;
          exit when result = 5;
        end loop inter;
        dbms_output.put_line(result);
      end loop outer;
      dbms_output.put_line(result);
    end;
    /


  • 相关阅读:
    etcd数据单机部署
    PostgreSQL INSERT ON CONFLICT不存在则插入,存在则更新
    ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
    Hbase 0.92.1集群数据迁移到新集群
    PostgreSQL创建只读账户
    Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
    Kafka技术内幕 读书笔记之(六) 存储层——日志的读写
    Kafka技术内幕 读书笔记之(五) 协调者——消费组状态机
    Kafka技术内幕 读书笔记之(五) 协调者——延迟的加入组操作
    Kafka技术内幕 读书笔记之(五) 协调者——协调者处理请求
  • 原文地址:https://www.cnblogs.com/wangcq/p/3469537.html
Copyright © 2011-2022 走看看