This:
Code:
v_rec_count := v_rec_count + 1
would be executed regardless UPDATE actually updates a record or not. It means that FOR loop exited without even entering the loop. Furthermore, it means that (probably) WHERE clause caused no records to be retrieved by a cursor.
What is the result of cursor's SELECT statement when you run it alone, in SQL*Plus, providing values you pass as parameters?
I'd try it myself, but - where's that test case I asked for? Why didn't you properly format the code?