首页 > 数据库技术 > 详细

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

时间:2017-08-18 21:55:39      阅读:289      评论:0      收藏:0      [点我收藏+]

一、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基础和分支循环

原文:http://www.cnblogs.com/sutao/p/7392208.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!