i don't know if it's possible to use a NOT FOUND handler for a dynamic cursor, but your 2nd cursor should never work as an UPDATE can't be used for OPEN, you have to use Dynamic SQL instead.
What happens when you remove the handler or change it to CONTINUE instead of EXIT?
Did some testing and the NOT FOUND handler does not trigger for a dynamic result set.
When the NOT FOUND handler is removed then the update returns a run time error: invalid statement specified in a dynamic declare cursor.
Seems counter intuitive that NOT FOUND is triggered for run-time errors. The manual says "NOT FOUND is a generic condition that represents the SQLSTATE codes for all 'no data
found' completion conditions."