In Oracle 8.1.6, We trying bulk update on Table with 1 Million records. We wanted to Update names, surnames in a table with Random names, surnames for anonymization of data. So thought of taking first say 1000 names, surnames with highest distinct count and Update all million records with it. So trying following example with count 200. it works. But when I try to modify for whole table it is giving me error. Please help or suggest some other method to anonymize data.

Thanks & Regards,

Shailesh

-------------------------------------------------
CREATE OR REPLACE PROCEDURE ProTest AS

TYPE NameTab IS TABLE OF TblTest.NAME%TYPE INDEX BY BINARY_INTEGER;
TYPE SurNameTab IS TABLE OF TblTest.SURNAME%TYPE INDEX BY BINARY_INTEGER;
TYPE RidTab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;

Names NameTab;
SurNames SurNameTab;
MyRowId RidTab;

BEGIN

SELECT Name BULK COLLECT INTO Names FROM (SELECT Name FROM TblTest
GROUP BY Name ORDER BY COUNT(Name) DESC) WHERE ROWNUM<=200;

SELECT SurName BULK COLLECT INTO SurNames FROM (SELECT SURNAME FROM TblTest
GROUP BY SURNAME ORDER BY COUNT(SURNAME) DESC) WHERE ROWNUM<=200;

SELECT ROWID BULK COLLECT INTO MyRowId FROM TblTest WHERE ROWNUM<=200;

FOR rec_Rowid IN MyRowId.FIRST..MyRowId.LAST Loop

UPDATE TblTest
SET Name = Names(rec_Rowid),
SurName = SurNames(rec_Rowid)
WHERE ROWID = MyRowid(rec_Rowid);

END LOOP;

END;
/
-------------------------------------------------