zoukankan      html  css  js  c++  java
  • Oracle数据库之SQL基础和分支循环

    一、SQL基础语言

    DECLARE --声明
    a varchar2(10); --变量或对象
    
    BEGIN
      a:='小明';--  :=   表示给一个变量赋值
      dbms_output.put_line(a); --输出用 dbms_output.put_line()
      
    END;

    二、分支

    DECLARE
      --声明
      A NUMBER(10);
      B NUMBER(10);
    
    BEGIN
    
      A := 2;
      B := 3;
      
      IF A < B THEN
        DBMS_OUTPUT.PUT_LINE('a小于b');
      ELSIF A > B THEN --注意 ELSIF 的写法
        DBMS_OUTPUT.PUT_LINE('a大于b');
      ELSE
        DBMS_OUTPUT.PUT_LINE('a等于b');
      END IF;
      
    END;

    三、循环

    第一种:(loop循环)

    DECLARE
    
      M NUMBER(5);
      
    BEGIN
      M := 5;
      
      LOOP
        EXIT WHEN M < 0;
        DBMS_OUTPUT.PUT_LINE(M);
        M := M - 1;
      END LOOP;
      
    END;

    执行结果:
    
    

    第二种:(while 循环

    DECLARE
    
      M NUMBER(5);
    
    BEGIN
      M := 5;
    
      WHILE M > 0 LOOP   --while 循环
        DBMS_OUTPUT.PUT_LINE(M);
        M := M - 1;
      END LOOP;
    
    END;

    执行结果:
    
    

    第三种:(for循环)

    DECLARE
    
    BEGIN
    
      FOR N IN 1 .. 5 LOOP
        --for 循环只能遍历像1~5这样的有规律的数字
        DBMS_OUTPUT.PUT_LINE(N);
      END LOOP;
    
    END;

    执行结果:
    
    

    四、处理异常

    DECLARE
      M     NUMBER(10);
      SNAME VARCHAR2(10);
    
    BEGIN
    
      M := 5;
    
      SELECT S.NAME INTO SNAME FROM Z_STUDENT S WHERE S.ID = M;
      DBMS_OUTPUT.PUT_LINE('查询结果:' || SNAME);
    
    END;

    执行结果:
    
    

    然后抛出异常  exception

    DECLARE
      M     NUMBER(10);
      SNAME VARCHAR2(10);
    
    BEGIN
    
      M := 50; --改个不存在的值
    
      SELECT S.NAME INTO SNAME FROM Z_STUDENT S WHERE S.ID = M;
      DBMS_OUTPUT.PUT_LINE('查询结果:' || SNAME);
    
    EXCEPTION
      --抛出异常
      WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('没有查询到数据');
      
    END;

    执行结果:
    
    

    再举个例子:

    DECLARE
      --声明
      A NUMBER(10);
      B NUMBER(10);
      NOZERO EXCEPTION; --定义nozero  为异常类型
    BEGIN
    
      A := 2;
      B := 0;
    
      IF A = 0 OR B = 0 THEN
        RAISE NOZERO; --RAISE   抛出异常
      END IF;
    
      IF A < B THEN
        DBMS_OUTPUT.PUT_LINE('a小于b');
      ELSIF A > B THEN
        --注意 ELSIF 的写法
        DBMS_OUTPUT.PUT_LINE('a大于b');
      ELSE
        DBMS_OUTPUT.PUT_LINE('a等于b');
      END IF;
    
    EXCEPTION
      WHEN NOZERO THEN
        DBMS_OUTPUT.PUT_LINE('a和b都不能为0!');
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('其他异常!');
      
    END;

    执行结果为:
    
    
  • 相关阅读:
    Maximal Square
    Largest Rectangle in Histogram
    Number of Islands
    Ajax工作原理及C/S与B/S的区别
    Spring的AOP和IoC及隔离级别
    final,finally,finalize的区别
    Servlet生命周期
    数组和链表
    Spring工作原理
    JVM加载class文件原理
  • 原文地址:https://www.cnblogs.com/sutao/p/7392208.html
Copyright © 2011-2022 走看看