ORACLE 不用写NO_DATA_FUND 异常捕获,开发的一个小技巧!
来源:互联网 发布:淘宝助理宝贝描述图片 编辑:程序博客网 时间:2024/06/04 19:43
这是我在工作中发现的一个很实用的小技巧,可以少写一些代码.下面,以scott.emp表为例子
先写一个过程:
create or replace procedure p_get_sal(p_empno int) is
v_sal number;
begin
select a.sal into v_sal from scott.emp a where a.empno = p_empno;
dbms_output.put_line(v_sal);
end;
再调用:
SQL> set serveroutput on
SQL> exec p_get_sal(123456);
begin p_get_sal(123456); end;
ORA-01403: 未找到任何数据
ORA-06512: 在 "SCOTT.P_GET_SAL", line 4
ORA-06512: 在 line 2
如果改写一下:
create or replace procedure p_get_sal(p_empno int) is
v_sal number;
begin
select max(a.sal) into v_sal from scott.emp a where a.empno = p_empno;
dbms_output.put_line(v_sal);
end;
SQL> exec p_get_sal(123456);
PL/SQL procedure successfully completed
则能正确执行.
也就是说,用MAX SUM 等聚合函数,即使在没有找到行的情况下,也会返回一个NULL 行,有了这个NULL行,就不用写NO_DATA_FUND了.在很多时候,需要先去查询一个表,再根据查出来的值做判断,这个时候这样写就很有用,避免了写异常捕获,代码更简洁.
另外,自定义函数找不到值也不会报错:
create or replace function f_get_sal(p_empno int) return number is
v_sal number;
begin
select a.sal into v_sal from scott.emp a where a.empno = p_empno;
return v_sal;
end;
SQL> select f_get_sal(123456) from dual;
F_GET_SAL(123456)
-----------------
- ORACLE 不用写NO_DATA_FUND 异常捕获,开发的一个小技巧!
- Android小技巧:实现捕获应用的运行时异常
- android开发技巧-记录未捕获的crash异常日志
- XP不用登录密码进入系统的一个小技巧
- oc写代码的一个小技巧
- 一个异常捕获的经验
- Android小技巧(一):实现捕获应用的运行时异常
- Android小技巧(一):实现捕获应用的运行时异常
- Android小技巧(一):实现捕获应用的运行时异常
- Android小技巧(一):实现捕获应用的运行时异常
- AppDomain的两个小技巧(程序运行完毕和未处理异常的处理) 捕获未处理异常
- 关于 捕获异常 技巧
- 利用with关键字写sql语句的一个小技巧
- iOS开发小技巧之快捷键的使用--极少用(甚至不用)鼠标开发iOS程序
- 一个oracle sql 小技巧
- 一个完整的线上异常捕获类
- [Android小技巧]如何不用图片创建一个带圆角的按钮
- oracle 异常捕获
- Traffic Manager:Azure中国版 正式发布
- 嵌入式 linux中kernel代码/lib/kobject.c文件分析
- 跳转无效
- 关于cocos2dx之lua使用TableView
- MVC [Control与View交互]
- ORACLE 不用写NO_DATA_FUND 异常捕获,开发的一个小技巧!
- linux NAT方式上网
- SpannableString 格式文字
- 数据挖掘在呼叫中心的六大应用点
- linux codeblick无法粘贴的问题
- 微信公众号不仅仅是营销
- 面试基础_03实现strcpy、strcat、strcmp、strlen
- javascript for循环的两种写法
- CentOS linux下安装Oracle客户端