博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 基本异常的练习及各个错误码
阅读量:5319 次
发布时间:2019-06-14

本文共 2494 字,大约阅读时间需要 8 分钟。

DECLARE   v_deptno emp.deptno%TYPE :=&deptno;   v_sal    emp.sal%TYPE;   v_empno  emp.empno%TYPE; BEGIN   SELECT sal INTO v_sal FROM emp WHERE deptno= v_deptno;   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; EXCEPTION   WHEN Dup_val_on_index THEN       DBMS_OUTPUT.PUT_LINE('数据库中没有编码为'||v_deptno||'的员工');   WHEN TOO_MANY_ROWS THEN     DBMS_OUTPUT.PUT_LINE(SQLCODE||v_deptno||SQLERRM);           ---1422返回多行   WHEN NO_DATA_FOUND THEN                  DBMS_OUTPUT.PUT_LINE(SQLCODE||v_deptno||SQLERRM);          --100表示NO_DATA_FOUNDEND; select * from dept            DECLARE   v_deptno dept.deptno%TYPE :=&deptno;   deptno_remaining EXCEPTION;   PRAGMA EXCEPTION_INIT(deptno_remaining, 100);   /* -2292 是违反一致性约束的错误代码 */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);  --sqlcode数据库返回的操作码   SQLERRM返回错误码信息     '程序运行错误!请使用游标'END;  DECLARE   v_deptno dept.deptno%TYPE :=&deptno;   no_result  EXCEPTION;   no_result1  EXCEPTION;   deptno_remaining EXCEPTION;  PRAGMA EXCEPTION_INIT(deptno_remaining, -2292);BEGIN -- DELETE FROM dept WHERE deptno=v_deptno;   UPDATE emp SET sal=sal+100 WHERE deptno=v_deptno;   IF SQL%FOUND THEN         RAISE no_result;  elsIF SQL%NOTFOUND THEN       RAISE no_result1;       END IF;   EXCEPTION   WHEN no_result THEN      DBMS_OUTPUT.PUT_LINE(SQLCODE||'这是1'||SQLERRM);       WHEN no_result1 THEN          DBMS_OUTPUT.PUT_LINE(SQLCODE||'这是2'||SQLERRM);    --1表示用户没有定义    WHEN deptno_remaining THEN       DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');       WHEN OTHERS THEN      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);       END;            Exception         when osi_general_error then            DBMS_OUTPUT.PUT_LINE(SQLCODE||'这是1'||SQLERRM);         when OTHERS THEN                          DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');select* from empdeclare      v_empno  emp.empno%type := &empno;       v_ename emp.ename%type;     begin      select ename into v_ename from emp       where empno = v_empno;      dbms_output.put_line(SQLCODE||'----'||v_ename);       --0表示没有异常 exception      when others then         raise_application_error(-20001 , 'emp'||v_empno||' does not exists'); end;

  

转载于:https://www.cnblogs.com/wx1691790309/p/7234640.html

你可能感兴趣的文章