日期:2014-05-16  浏览次数:20326 次

存储过程中异常的使用_示例

?

存储过程中异常的使用_示例

?

CREATE OR REPLACE PROCEDURE UPDATE_SAL(E_NAME IN VARCHAR2, E_SAL IN NUMBER) IS
  /** 声明异常 */
  NOT_FOUND EXCEPTION;
BEGIN
  /** 更改指定ename对应的工资 */
  UPDATE EMP E SET E.SAL = E_SAL WHERE LOWER(E.ENAME) = LOWER(E_NAME);

  IF SQL%NOTFOUND THEN
    /** 如果E_NAME不存在,数据回滚,并抛出异常 */
    ROLLBACK;
    RAISE NOT_FOUND;
  ELSE
    /** 如果E_NAME存在,事务提交 */
    COMMIT;
    DBMS_OUTPUT.PUT_LINE('update sal success');
  END IF;
EXCEPTION
  WHEN NOT_FOUND THEN
    /** E_NAME不存在抛出的异常 */
    DBMS_OUTPUT.PUT_LINE('there is not name ' || E_NAME || ' exits');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('others exception');
END;
/
?

存储过程的调用:

?

1. exec update_sal('scott1',3333);
    
     打印的信息 : there is not name scott1 exits

2. exec update_sal('scott',3333);

      打印的信息 : update sal success
? ?

?

?