在存储过程中常用到字段值赋给变量的情况,此时主要会出现两种情况
一,能查询到记录
记录中字段值又分两种情况
1、字段有值
2、字段值为NULL
二、查询不到记录,COUNT返回为0
@H_301_13@
--一下是代码测试情况
-测试
sql>selectempno,sal,commfromempwhereempno=7369;
EMPNOSALCOMM
------------------------------
7369800
sql>declarev_empnonumber(6);
2v_salnumber(6);
3v_commnumber(6);
4begin
5selectempno,commintov_empno,v_sal,v_commfromempwhereempno=7369;
6dbms_output.put_line('empno='||v_empno);
7dbms_output.put_line('sal='||v_sal);
8dbms_output.put_line('comm='||v_comm);
9end;
10/
empno=7369
sal=800
comm=
5selectcommintov_commfromempwhereempno=7369;
6dbms_output.put_line('comm='||v_comm);
7end;
8/
sql>select*fromempwhereempno=7368;
未选定行
@H_301_13@ --未查询到记录,直接赋值则会抛出异常,针对这种情况,应做异常情况判断处理
5selectcommintov_commfromempwhereempno=7368;
declarev_empnonumber(6);
*
第1行出现错误:
ORA-01403:未找到数据
ORA-06512:在line5
sql>declarev_commnumber(6);
2begin
3selectcommintov_commfromempwhereempno=7368;
4dbms_output.put_line('comm='||v_comm);
5exception
6whenothersthen
7dbms_output.put_line('no_date_found');
8end;
9/
no_date_found
PL/sql过程已成功完成。
--处理空记录情况
2v_cntnumber(6);
3begin
4selectcount(*)intov_cntfromempwhereempno=7368;
5ifv_cnt>0then
6selectcommintov_commfromempwhereempno=7368;
7dbms_output.put_line('comm='||v_comm);
8endif;
9exception
10whenothersthen
11dbms_output.put_line('no_date_found');
12end;
13/
PL/sql过程已成功完成。