ORA-01403: no data found
This is an error that happens in Oracle when you try and stuff nothing into a variable via a select statement.
SELECT id INTO tempvar FROM person WHERE name = 'Steve';
Most places will tell you to work with this problem through exceptions:
BEGIN SELECT id INTO tempvar FROM person WHERE first_name = 'Steve'; EXCEPTION WHEN NO_DATA_FOUND THEN -- what to do when no data is found END;
This seems strange to me, as this is not an exceptional case. You know there is a possibility that the data you want won’t be there. So why don’t you just check for it in the beginning.
I’d like to propose a more explicit solution to the problem.
SELECT count(*) into tempvar from person where first_name = 'Steve'; IF temp_variable <> 0 THEN --we're all good SELECT id INTO tempvar FROM person WHERE first_name = 'Steve'; END IF;
Exceptions break the flow of a program. Do you really want to break out of what you’re doing or do you want to handle the missing row?
Edit:
Several days after posting I came across a stackoverflow question regrading how to drop a table that may or may not exist. The first (and accepted) answer recommends catching the “table not found” exception, which is what I recommend against. The second answer, however,
makes a similar assertion about using a conditional.
Comment on that answer:
+1 This is better because do not relay on exception decoding to understand what to do. Code will be easier to mantain and understand – daitangio