• 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;

    执行结果为:
    
    
  • 相关阅读:
    SQL server 2008 建立新用户
    2021.3.22-刷题 (移位)
    2021.3.17刷题-分割回文串
    2021.3.16 刷题--组合总和||(一种组合下元素不可重复选取)
    2021.3.15刷题-组合总和(元素可重复选取)
    2021.3.14刷题-设计哈希映射
    2021.3.13刷题-用拉链法设计哈希集合
    2021.3.12刷题-验证二叉树的前序序列化
    2021.3.11刷题-(删除二叉搜索树中的节点)
    2021.2.28刷题 回溯-电话字母组合
  • 原文地址:https://www.cnblogs.com/sutao/p/7392208.html
Copyright © 2020-2023  润新知