since you are running a cursor to determine the values to be put into this update statement, why not just write an update statement that performs the update with the required values? Something along the lines of:
set columny = (select new_value from wherever where these_conditions_apply)
@DNance: I think that snehasingh just wanted to help as you do. Although, he should take care of the forum name, as posting non-Oracle (sqlserver?) code in Oracle forum space does not make much sense.
As the column names are present in the variable, they cannot be statically stated in the UPDATE statement.
And as the main performance problem except of the whole process concept (no use of binding, key responses marked as helpful) was already spotted in this thread: https://community.oracle.com/thread/3971805 without any further feedback, I see no reason in adding anything.