As akkerend allready explained, NO_DATA_FOUND (as well as TOO_MANY_ROWS) are only applicable to SELECTs.

If your intention with this exception was merely to correctly display the procedure's updating summary, you should use SQL%ROWCOUNT (and maybe SQL%FOUND, SQL%NOTFOUND) immediatelly after your UPDATE clause to properly advance your update counters.

HTH,