zoukankan      html  css  js  c++  java
  • 数据库中的异常(预定义,非预定义,用户自定义)

    DECLARE   --预定义 异常信息 不声明异常
       v_empno emp.empno%TYPE :=&empno;
       
       v_sal    emp.sal%TYPE;
    BEGIN
       SELECT sal INTO v_sal FROM emp WHERE empno=v_empno;
       IF v_sal<=1500 THEN 
            UPDATE emp SET sal=sal+100 WHERE empno=v_empno; 
            DBMS_OUTPUT.PUT_LINE('编码为'||v_empno||'员工工资已更新!');     
       ELSE
            DBMS_OUTPUT.PUT_LINE('编码为'||v_empno||'员工工资已经超过规定值!');
       END IF; 
     
    END; 
    
    ------------------------------------------------------------------------------------------------------
    --用户自定义异常
       DECLARE
       v_empno emp.empno%TYPE :=&empno;     
     --声明变量V_empno,类型 emp.empno%TYPE 类型与emp表empno列类型一致
       no_result  EXCEPTION;
       --声明一个异常 名为 no_result 
    BEGIN
       UPDATE emp SET sal=sal+100 WHERE empno=v_empno;
       IF SQL%NOTFOUND THEN
          RAISE no_result;--触发异常                      -- raise触发
       END IF;
    EXCEPTION
       WHEN no_result THEN --当异常被触发
          DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');
          
       WHEN OTHERS THEN                                   --可以理解为异常包,接收 定义异常之外的 异常  
         DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
    END; 
    -------------------------------------------------------------------------------------------------------
    --非预定义异常
      
      -- 在PL/SQL 块的声明部分定义异常情况:
        --<异常情况>  EXCEPTION; 
      --将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句 
      --PRAGMA EXCEPTION_INIT(<异常情况>, <错误代码>); 
      --在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理
    
    DECLARE
       v_deptno dept.deptno%TYPE :=&deptno;
       deptno_remaining EXCEPTION;--声明异常
       ---
       PRAGMA EXCEPTION_INIT( deptno_remaining,     -2292);/* -2292 是违反一致性约束的错误代码 */
                              --异常情况         --oracle错误代码
                              
      /* 如果oracle语句执行中出现-2292错误,则触发deptno_remaining异常*/ 
       ---                      
    BEGIN
       DELETE FROM dept WHERE deptno=v_deptno;   
    EXCEPTION
       WHEN deptno_remaining THEN 
          DBMS_OUTPUT.PUT_LINE('违反数据完整性约束!');
       WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
    END; 
    -------------------------------------------------------------------------------------------------------
  • 相关阅读:
    什么是css权重
    html5 canvas画五角星(美国队长)
    从输入URL到页面加载发生了什么
    javascript之事件委托(转)
    javascript之常用排序算法
    javascript之闭包
    javascript二维数组的删除
    javascript之apply()、call()
    div+css两列布局与三列布局
    css处理水平居中问题(淘宝双飞翼布局)
  • 原文地址:https://www.cnblogs.com/-strong/p/7233409.html
Copyright © 2011-2022 走看看