Suppongo che col_id sia la chiave primaria. Quindi nella dichiarazione di aggiornamento
EXECUTE IMMEDIATE 'UPDATE ' || dest || ' SET COUNTRY_CODE = :v1 WHERE col_id = :v2'
USING l_vc_CountryCode, l_vc_ColId;
stai sempre aggiornando al massimo una riga e quindi la condizione
SQL%ROWCOUNT > 1
non è mai vero ( 1 non è> 1 )
Quindi, se non hai nessun'altra dichiarazione di commit nella tua procedura, non commetterai mai quegli aggiornamenti.
A proposito:qual è lo scopo di questo
if SQL%ROWCOUNT > 1 THEN
inserts := inserts + 1;
counter := counter + 1;
IF counter > 500 THEN
counter := 0;
COMMIT;
END IF;
END IF;
perché non ti impegni solo alla fine del tuo lavoro?