Предполагам, че col_id е първичният ключ. Така че в изявлението за актуализиране
EXECUTE IMMEDIATE 'UPDATE ' || dest || ' SET COUNTRY_CODE = :v1 WHERE col_id = :v2'
USING l_vc_CountryCode, l_vc_ColId;
вие винаги актуализирате най-много един ред и следователно условието
SQL%ROWCOUNT > 1
никога не е вярно ( 1 не е> 1 )
Така че, ако нямате друг израз за ангажиране във вашата процедура, никога няма да ангажирате тези актуализации.
Между другото:каква е целта на това
if SQL%ROWCOUNT > 1 THEN
inserts := inserts + 1;
counter := counter + 1;
IF counter > 500 THEN
counter := 0;
COMMIT;
END IF;
END IF;
защо просто не се ангажираш в края на работата си?