> The difference in this case is your example selects into a variable = instead of directly updating the table. I followed up on this by = reading the PL/SQL manual (RTFM?) and there are several warnings about = using cursor attributes including one similiar to your example. What I = wrote is only good for the narrow usage I showed ;-). On page 6-40 of = the 9.2 PL/SQL Users Guide is: >=20 > "If a SELECT INTO statement fails to return a row, > PL/SQL raises = the predefined > exception NO_DATA_FOUND whether you check %NOTFOUND on > the next = line or not. > Consider the following example: > BEGIN > ... > SELECT sal INTO my_sal FROM emp WHERE empno =3D > my_empno; > -- might raise NO_DATA_FOUND > IF SQL%NOTFOUND THEN -- condition tested only when false > ... -- this action is never taken > END IF; > The check is useless because the IF condition is tested > only when = %NOTFOUND is > false. When PL/SQL raises NO_DATA_FOUND, normal > execution stops and = control > transfers to the exception-handling part of the block." > =20 > > An update that doesn't update any records is not an exception = error. > >=20 > > Trying to select multiple record values or no record values=20 > > when you expect > > to always get one and only one value is an exception, so that=20 > > logic won't > > work in this situation. >=20 ---------------------------------------------------------------- Please see the official ORACLE-L FAQ: http://www.orafaq.com ---------------------------------------------------------------- To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx put 'unsubscribe' in the subject line. -- Archives are at //www.freelists.org/archives/oracle-l/ FAQ is at //www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------