我想查看我的月工资单,其中包含员工工资以及其他详细信息。
我创建了一个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:
提前感谢您的帮助。
答案 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语句包装在异常块中并捕获“找不到数据”异常,并采取相应的行动