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

Posted 敲不完的代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

执行结果为:

 

以上是关于Oracle数据库之SQL基础和分支循环的主要内容,如果未能解决你的问题,请参考以下文章

Oracle笔记4-pl/sql-分支/循环/游标/异常/存储/调用/触发器

oracle(sql)基础篇系列——PLSQL游标存储过程触发器

oracle pl/sql 控制结构(分支,循环,控制)

PL/SQL 编程基础,变量,分支,循环,异常

Oracle实战笔记(第七天)之PL/SQL进阶

java 流程控制基础之if else