Looks like you're being limited by your ldap server. Ours restricts us to 100 values returned. We have to do the following. Loop through a table with 36 values. These values consists of all the letters of the alphabet plus the numbers 0-9. This number or letter is appended to the first bunch of employeed numbers we are interested in. We then loop through each of the 36 values 26 times appending a letter of the alphabet. We then use each one of these as our search against ldap. Cumbersome and slow and not even guaranteed to bring back less than 100 employees but it's working for now. Mike BEGIN WHILE nCounter < 36 LOOP SELECT item INTO sItem FROM ldap_sequence WHERE count = nCounter; nCounter2 := 0; WHILE nCounter2 < 26 lOOP SELECT item INTO sItem2 FROM ldap_sequence WHERE count = nCounter2; sFilter := ''; sFilter := sFilterPrefix||sTierB||sItem||'*)(sn='||sItem2||'*))'; employee_data(sFilter); --make the call to ldap server nCounter2 := nCounter2 + 1; END LOOP; nCounter := nCounter + 1; END LOOP; COMMIT; END tier_b; -- //www.freelists.org/webpage/oracle-l