title: Why is no_data_found ORA-01403 an exception in Oracle?
body: <p>If the SELECT INTO statement doesn't return at least one row, ORA-01403 is thrown.</p>
  
  <p>For every other DBMS I know this is normal on a SELECT.
  Only Oracle treats a SELECT INTO like this. </p>
  
  <pre><code>CREATE OR REPLACE PROCEDURE no_data_proc IS
     dummy dual.dummy%TYPE;
  BEGIN
    BEGIN 
       SELECT dummy  
         INTO dummy
         FROM dual
        WHERE dummy = 'Y';   
    EXCEPTION 
       WHEN no_data_found THEN
          dbms_output.put_line('Why is this needed?');
    END;
  END no_data_proc;
  </code></pre>
  
  <p><strong>Why?</strong></p>
  
  <p>In my opinion you don't need this exception really. It is too much overhead.
  Sometimes it is handy but you have to write a whole BEGIN, EXCEPTION, WHEN, END Block.</p>
  
  <p>Are there any essential reasons I don't see?</p>