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;

    执行结果为:
    
    
  • 相关阅读:
    golang的string是包使用
    OTHER状态的mongodb副本集成员转换为独立的新副本集primary
    linux命令行快捷键
    如何配置vcodes成最美观的样子,让你从此爱上代码
    记一次Lock wait timeout异常的排查过程
    mysql变更上线流程
    go build 使用
    Makefile文件
    解决 windows10系统和AOC显示器时不时地闪现黑屏问题
    feign调用添加header参数
  • 原文地址:https://www.cnblogs.com/sutao/p/7392208.html
Copyright © 2011-2022 走看看