To avoid duplicates, better use a sequence. The sequence can be stored in a table.
>In my applications that are already running for long time
>and would be hard to modify, I am considering to use the code below
>
>A random number would be added to the code to prevent duplications
>
>Do you think 1 in 10,000 is good a range to prevent duplications ?
>
>**************************************
>add_code = Int(10000*Rand())
>
>dimension lctemp[1]
>select max(ap.id2) from ap ;
> into array lctemp
> lcTemp[1] = nvl(lcTemp[1],0)+1 + add_code
>replace ap.id2 with lctemp
>
>*********************************************
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)