Oracle数据库:异常处理
2020-07-28 23:04
681 查看
1、使用select into语句读取employees的一行,使用异常处理处理no_data_found和two_many_rows的系统预定义异常
select * from employees; declare item employees%rowtype; begin SELECT * into item from employees where salary=&input; dbms_output.put_line(item.first_name||' '||item.last_name); EXCEPTION when no_data_found then dbms_output.put_line('[err]NO_DATA_FOUND'); when too_many_rows then dbms_output.put_line('[err]too_many_rows'); when others then dbms_output.put_line('[err]others'); end;
2、使用嵌套异常端处理,循环读取若干个id号的员工,使得其中存在不存在员工号。输出对应员工的first_name和last_name,不存在的员工输出“not exists such empolyee”。
select * from employees; declare item employees%rowtype; begin for i in 95..120 loop begin SELECT * into item from employees where employee_id=i; dbms_output.put_line(item.employee_id||' '||item.first_name||' '||item.last_name); EXCEPTION WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE('not exists such empolyee'); CONTINUE; end; end loop; end;
3、写一个 处理ora-01400 (不能插入空值)的系统异常的示例程序和异常处理
declare insert_excep exception; pragma exception_init(insert_excep, -01400); begin insert into employees values (50, null,null,null,null,null,null,null,null,null,null); exception when insert_excep then dbms_output.put_line('INSERT OPERATION FAILED'); dbms_output.put_line(SQLERRM); end;
4、使用SQLCODE,SQLERRM,获得异常的编号和错误信息,并输出异常的编号和错误信息
declare emp Employees%rowtype; error_code number; error_message varchar2(255); begin select * into emp from Employees where employee_id =95; dbms_output.put_line('95 ''s salary is : ' || emp.salary); exception when no_data_found then error_code := SQLCODE; error_message := SQLERRM; dbms_output.put_line(error_code || ' ' || error_message); end;
5、自定义一个异常,抛出这个异常并处理
declare invalid_department exception; name varchar2(20) :='name'; deptno number :=&deptno; begin update employees set employee_id=name where department_id=deptno; if sql%notfound then raise invalid_department; end if; exception when invalid_department then dbms_output.put_line('No such department'); end;
6、使用raise_application_error抛出一个应用异常
declare v_id Employees.employee_id%type:=&v; e_name exception; pragma exception_init(e_name, -20999); begin delete from employees where employee_id =v_id; if sql % notfound then raise_application_error(-20999, 'This is not a valid employee_id'); end if; exception when e_name then dbms_output.put_line('The employee_id '||v_id||' not exists, Please choose again'); end;
相关文章推荐
- 向Oracle数据库中插入内容带特殊符号“&”的异常及处理
- oracle数据库安装异常处理
- Oracle数据库Constraint约束的常用操作及异常处理
- Oracle数据库Constraint约束的常用操作及异常处理
- Oracle数据库学习笔记之异常处理,存储过程
- oracle数据库中的异常处理
- navicat 客户端连接oracle数据库 异常处理 can't load oci dll 和 Instant Client package...
- Oracle数据库的导入与导出,及数据库的异常处理
- java常用类解析七:java异常机制、异常栈、异常处理方式、异常链、异常丢失
- Java Executor并发框架(十三)Executor框架线程池关于异常的处理
- Head First C# 中文版 第10章 异常处理 page453
- explorer.exe[XXXX]中发生未处理的win32异常 解决办法
- java中IO流的标准异常处理代码
- Oracle数据库SQL复杂查询、数据处理(四、工业数据时间周期、自然周、阶段周的处理方法)
- python异常处理
- Android 全局异常处理
- android基础知识24:Android中处理崩溃异常
- Python异常处理机制
- Arm异常中断返回时的处理
- Spring统一异常处理