空值返回问题

时间:2009-08-10 07:46:49

标签: database plsql oracle10g

我想查看我的月工资单,其中包含员工工资以及其他详细信息。

我创建了一个PL / SQL块,但是当我将条件用于检查现有员工ID时,另一个表会返回null值,因此我的表格不会更进一步。

set serveroutput on 
declare
  emp_id NUMBER :=&emp;
  temp NUMBER;
begin
  select nvl(employee_id,10) into temp FROM bhavya_temp where bhavya_temp.employee_id=emp_id;

  dbms_output.put_line(temp);

  if temp is NULL
  then 
    dbms_output.put_line('employee ID does not exist');
  else 
    dbms_output.put_line('bye');
  end if;
end;

当我输入表中存在的员工ID 1或2时,结果为

anonymous block completed
1
bye

当我输入3个或更多不存在的时候

Error report:
ORA-01403: no data found
ORA-06512: at line 6
01403. 00000 -  "no data found"
*Cause:    
*Action:

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

我从来没有写过任何PL / SQL,只有a very similar error is reported here

看起来您可以通过将SELECT ... INTO部分放在BEGIN ... EXCEPTION .. END块中来解决问题。

希望这有帮助。

答案 1 :(得分:3)

让create table语句包含一些示例数据会很有帮助,这样就可以重现问题。

问题:如果不存在具有ID的行,请获取ORA-1403。没有数据,没有NULL可以转换。甲骨文并没有为你做好准备。

答案 2 :(得分:2)

将select语句包装在异常块中并捕获“找不到数据”异常,并采取相应的行动