当前位置:Gxlcms > 数据库问题 > Oracle数据库之SQL基础和分支循环

Oracle数据库之SQL基础和分支循环

时间:2021-07-01 10:21:17 帮助过:7人阅读

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;

执行结果为:
技术分享


 

Oracle数据库之SQL基础和分支循环

标签:class   数字   exit   oracle数据库   不能   2-2   bms   分支   oop   

人气教程排行