--ORACLE判断 循环 异常

--判断  循环  异常
/*  语法
IF<条件> THEN
语句
[ELSIF <条件> THEN
语句]
[ELSE   
语句]
END IF
*/
--1.
DECLARE
    V_SCORE NUMBER;
BEGIN 
  V_SCORE :='&请输入学生的成绩';
  IF V_SCORE >90 THEN
    DBMS_OUTPUT.PUT_LINE('送个美女');
  ELSE
    DBMS_OUTPUT.PUT_LINE('打一顿');
  END IF; 
END;
--2.
DECLARE
    V_SCORE_C NUMBER;
    V_SCORE_JAVA NUMBER;
BEGIN
    V_SCORE_C :='&请输入学生C的成绩';
    V_SCORE_JAVA :='&请输入学生JAVA的成绩';
    
    IF V_SCORE_C>=90 AND V_SCORE_JAVA>=90 THEN
      DBMS_OUTPUT.PUT_LINE('奖励个手机');
    ELSIF  V_SCORE_C>=80 OR V_SCORE_JAVA>=80 THEN
      DBMS_OUTPUT.PUT_LINE('跪键盘');
    ELSE
      DBMS_OUTPUT.PUT_LINE('打一顿');
    END IF;
END;


--3.根据月份的值判断该月所属的季节
/*
春季 3,4,5
夏季 6,7,8
秋季 9,10,11
冬季 12,1,2
*/


DECLARE
   V_MONTH NUMBER;
   V_SEASON VARCHAR2(30);
BEGIN
   V_MONTH :='&请输入月份';
   IF V_MONTH =12 OR V_MONTH =1 OR V_MONTH =2 THEN
    V_SEASON :='冬季';
   ELSIF V_MONTH IN(3,4,5) THEN
     V_SEASON :='春季';
   ELSIF V_MONTH BETWEEN 6 AND 8 THEN
     V_SEASON :='夏季';
   ELSIF V_MONTH IN(9,10,11) THEN
     V_SEASON :='秋季';
   ELSE
      V_SEASON :='月份错误';
   END IF;
    DBMS_OUTPUT.PUT_LINE(V_MONTH||'月份是'||V_SEASON);
END;
-----4.JAVA中的swith case 语句
DECLARE
    V_SCORE NUMBER;
BEGIN
    V_SCORE :='&请输入成绩';
    CASE
      WHEN V_SCORE >=90 THEN DBMS_OUTPUT.PUT_LINE('奖励个鸡腿');
      WHEN V_SCORE >=80 THEN DBMS_OUTPUT.PUT_LINE('玩游戏');
      WHEN V_SCORE >=70 THEN DBMS_OUTPUT.PUT_LINE('跪键盘');
      ELSE  DBMS_OUTPUT.PUT_LINE('打一顿');
     END CASE;
END;   
--5.循环
/*
LOOP
  要执行的语句
  IF<条件> THEN
     EXIT; --条件满足,退出循环
  END IF;
 END LOOP;
*/
--第一种
DECLARE
     V_NUM NUMBER :=10;
BEGIN
  LOOP
     V_NUM :=V_NUM -1;
     DBMS_OUTPUT.PUT_LINE('I=:'||V_NUM);
     IF V_NUM <2 THEN
       DBMS_OUTPUT.PUT_LINE('退出了');
       EXIT;
       END IF;
      END LOOP;
END;
--第二种
DECLARE
   V_NUM NUMBER :=10;
BEGIN
  LOOP
    V_NUM :=V_NUM-1;
    DBMS_OUTPUT.PUT_LINE('V_NUM:'||V_NUM);
    EXIT WHEN V_NUM <2;
    --使用exit when(后面使用boolean表达式,如果该表达式返回true则退出循环)语句退出loop
--循环
  END LOOP;
END;
--6.升循环
/*
WHILE<布尔表达式>loop
要执行的语句
END LOOP
*/
DECLARE
  V_NUM NUMBER :=0;
BEGIN
  WHILE V_NUM <20 LOOP
    DBMS_OUTPUT.PUT_LINE('V_NUM:'||V_NUM);
    V_NUM:=V_NUM+1;
  END LOOP;
END;


/*
FOR 循环计算器  IN 上限..下线 LOOP
  要执行的语句
END LOOP
*/
DECLARE
   V_NUM NUMBER :=0;
BEGIN
  FOR I IN 10..20 LOOP--是一个闭区间[]
    V_NUM :=V_NUM +1;
    DBMS_OUTPUT.PUT_LINE('V_NUM:'||V_NUM);
   END LOOP;
END;  




--使用循环打印图形
/*
*
**
***
****
*****
*/
DECLARE
BEGIN
  FOR I IN 1..5 LOOP
    FOR J IN 1..I LOOP
      DBMS_OUTPUT.PUT('*'); --不换行输出
     END LOOP;
     DBMS_OUTPUT.PUT_LINE(''); --打印完一行之后换行
    END LOOP;
END;      
--使用for循环打印九九乘法表
DECLARE
BEGIN
   FOR I IN 1..9 LOOP
     FOR J IN 1..I LOOP
       DBMS_OUTPUT.PUT(J||'*'||I||'='||(I*J)||'  ');
      END LOOP;
      DBMS_OUTPUT.PUT_LINE('');
     END LOOP;
 END; 
      
      
--异常
--1.预定义异常: ORACLE自带
--2.自定义异常 (1.错误 2.业务逻辑需要)


--系统自定义异常处理方式
DECLARE
    V_NUM1 NUMBER(5);
    V_NUM2 NUMBER(5);
    V_RESULT NUMBER(5);
BEGIN
    V_NUM1 :='&请输入被除数';
    V_NUM2 :='&请输出除数';
    V_RESULT :=V_NUM1/V_NUM2;
    DBMS_OUTPUT.PUT_LINE('V_RESULT:'||V_RESULT);
    EXCEPTION
      WHEN ZERO_DIVIDE THEN --当遇到系统自定义异常的时候不需要做另外的处理,直接调用异常
        --代码即可捕获
        DBMS_OUTPUT.PUT_LINE('输入的除数为0');
        DBMS_OUTPUT.PUT_LINE(SQLCODE);
        DBMS_OUTPUT.PUT_LINE(SQLERRM);
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('其他错误');
        DBMS_OUTPUT.PUT_LINE(SQLCODE);
        DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值