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

    执行结果为:
    
    
  • 相关阅读:
    证明一下拉普拉斯的《概率分析论》观点
    Android实现小圆点显示未读功能
    命名 —— 函数的命名
    node.js 之爬虫
    ubuntu安装 tensorflow GPU
    古文(诗词文)—— 结构模式与复用
    Win10安装Ubuntu16.04 双系统
    python使用wget下载网络文件
    文字检测与识别资源
    10大深度学习架构:计算机视觉优秀从业者必备
  • 原文地址:https://www.cnblogs.com/sutao/p/7392208.html
Copyright © 2020-2023  润新知