title: Can %NOTFOUND return null after a fetch?
body: <p><a href="https://stackoverflow.com/q/11271739/458741">This question</a> raised a very interesting point; there seems to be a contradiction in the Oracle documentation on whether it's possible for <code>%NOTFOUND</code> to be null after a fetch. Is it?</p>
  
  <p>To quote from the <a href="http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#LNPLS546" rel="nofollow noreferrer">11g documentation</a></p>
  
  <blockquote>
    <p>Note: In Example 6-16, if FETCH never fetches a row, then c1%NOTFOUND
    is always NULL and the loop is never exited. To prevent infinite
    looping, use this EXIT statement instead: EXIT WHEN c1%NOTFOUND OR
    (c1%NOTFOUND IS NULL);</p>
  </blockquote>
  
  <p>The documentation seems to directly contradict itself as it also says the following, which implies that after a fetch <code>%NOTFOUND</code> <em>cannot</em> be null.</p>
  
  <blockquote>
    <p>%NOTFOUND (the logical opposite of %FOUND) returns:<br>
    NULL after the explicit cursor is opened but before the first fetch<br>
    FALSE if the most recent fetch from the explicit cursor returned a row<br>
    TRUE otherwise  </p>
  </blockquote>
  
  <p>The <a href="http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/cursor_attributes.htm#LNPLS01311" rel="nofollow noreferrer">10g documentation</a> has a similar warning, which isn't, necessarily, a direct contradiction as it warns that a fetch might not execute successfully in order for this behaviour to be exhibited.</p>
  
  <blockquote>
    <p>Before the first fetch, %NOTFOUND evaluates to NULL. If FETCH never
    executes successfully, the EXIT WHEN condition is never TRUE and the
    loop is never exited. To be safe, you might want to use the following
    EXIT statement instead:</p>
    
    <p>EXIT WHEN c1%NOTFOUND OR c1%NOTFOUND IS NULL;</p>
  </blockquote>
  
  <p>In what situations might a fetch either "fail" or might <code>%NOTFOUND</code> return null after a fetch has been executed?</p>