Этот запрос создает первые 100 предложений по именам учетных записей на основе имени и фамилии (не стесняйтесь настраивать количество сгенерированных параметров).
with acc as (
select rownum id, 'John' fname, 'Smith' lname from dual connect by level <=100
)
select
id,
case when id <= length(fname) then
substr(fname,1,id)||lname
else
fname||lname||to_char(id-length(fname)) end as account_name
from acc;
ID ACCOUNT_NAME
---------- -------------------------------------------------
1 JSmith
2 JoSmith
3 JohSmith
4 JohnSmith
5 JohnSmith1
6 JohnSmith2
7 JohnSmith3
8 JohnSmith4
9 JohnSmith5
....
Если у вас есть таблица с назначенными именами учетных записей,скажем user_accounts
, вы можете открыть этот курсор и получить первый ряд.Это обеспечит новое бесплатное имя учетной записи в соответствии с вашими правилами.
with acc as (
select rownum id, 'John' fname, 'Smith' lname from dual connect by level <=100
), acc2 as (
select
id,
case when id <= length(fname) then
substr(fname,1,id)||lname
else
fname||lname||to_char(id-length(fname)) end as account_name
from acc)
select id, account_name from acc2
where account_name not in
(select account_name from user_accounts)
order by id;