U kunt uw eigen functie maken. Dit is een optie:
create or replace function random_str(v_length number) return varchar2 is
my_str varchar2(4000);
begin
for i in 1..v_length loop
my_str := my_str || dbms_random.string(
case when dbms_random.value(0, 1) < 0.5 then 'l' else 'x' end, 1);
end loop;
return my_str;
end;
/
select random_str(30) from dual;
RANDOM_STR(30)
--------------------------------------------------------------------------------
pAAHjlh49oZ2xuRqVatd0m1Pv8XuGs
Misschien wilt u de 0.5
. aanpassen om rekening te houden met de verschillende poolgroottes - 26 voor l
vs. 36 voor x
. (.419354839?
). U kunt ook value() gebruiken en het begin- en eindbereik van de tekenwaarden doorgeven, maar dat zou specifiek zijn voor de tekenset.
Waarom... heeft Oracle een reden nodig? Het gebruik van x
zou kunnen suggereren dat het oorspronkelijk hexadecimaal was en werd uitgebreid om alle hoofdletters te bevatten, zonder dat het bij hen opkwam om tegelijkertijd een versie met gemengde letters toe te voegen.