Oracle游标使用方法及语法大全

分回退插入操作,然后显示相应的错误信息。

【训练2】 使用RAISE_APPLICATION_ERROR函数引发系统异常。 Sql代码

1. SET SERVEROUTPUT ON 2. DECLARE

3. New_no NUMBER(10); 4. BEGIN

5. New_no:=6789;

6. INSERT INTO emp(empno,ename) 7. VALUES(new_no, 'JAMES');

8. IF new_no<7000 THEN 9. ROLLBACK;

10. RAISE_APPLICATION_ERROR(-20001, '编号小于7000的下限!'); 11. END IF;

12. IF new_no>8000 THEN

13. ROLLBACK;

14. RAISE_APPLICATION_ERROR (-20002, '编号大于8000的下限!'); 15. END IF; 16. END;

执行结果为: Sql代码

1. DECLARE 2. *

3. ERROR 位于第 1 行:

4. ORA-20001: 编号小于7000的下限! 5. ORA-06512: 在line 9

说明:在本训练中,使用RAISE_APPLICATION_ERROR引发自定义异常,并以系统错误的方式进行显示。错误编号为20001和20002。

注意:同上一个训练比较,此种方法不需要事先定义异常,可直接引发。

可以参考下面的程序片断将出错信息记录到表中,其中,errors为记录错误信息的表,SQLCODE为发生异常的错误编号,SQLERRM为发生异常的错误信息。 DECLARE

v_error_code NUMBER;

v_error_message VARCHAR2(255); BEGIN ...

EXCEPTION ...

WHEN OTHERS THEN

v_error_code := SQLCODE ;

v_error_message := SQLERRM ; INSERT INTO errors

VALUES(v_error_code, v_error_message); END;

【练习1】修改雇员的工资,通过引发异常控制修改范围在600~6000之间。 阶段训练

【训练1】 将雇员从一个表复制到另一个表。 步骤1:创建一个结构同EMP表一样的新表EMP1:

CREATE TABLE emp1 AS SELECT * FROM SCOTT.EMP WHERE 1=2; 步骤2:通过指定雇员编号,将雇员由EMP表移动到EMP1表: Sql代码

1. SET SERVEROUTPUT ON 2. DECLARE

3. v_empno NUMBER(5):=7788; 4. emp_rec emp%ROWTYPE; 5. BEGIN

6. SELECT * INTO emp_rec FROM emp WHERE empno=v_empno; 7. DELETE FROM emp WHERE empno=v_empno; 8. INSERT INTO emp1 VALUES emp_rec; 9. IF SQL%FOUND THEN

>>闁诲繒鍋炲ú鏍閹达箑绀傞柕濠忛檮閻庯拷<<
12@gma联系客服:779662525#qq.com(#替换为@)