点击(此处)折叠或打开
-
create or replace function F_GET_RANDOM
-
(rnd_size in integer) return varchar2
-
is
-
v_result varchar2(500); --结果
-
v_source varchar2(500); --生成随机码,字符源
-
v_source_len integer;
-
v_rnd integer;
-
v_i integer;
-
--函数用途:生成随机数
-
--author:程晓鹏
-
--date:2017.04.01
-
begin
-
v_source := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
v_source_len := length(v_source);
-
v_i := 0;
-
v_result := '';
-
while v_i < rnd_size loop
-
--dbms_random.value函数,取值范围为min<=value<max;因此取值范围为(1,v_source_len+1),不然最后一位不能随机取到
-
select to_number(trunc(dbms_random.value(1,v_source_len+1))) into v_rnd from dual; --获取随机数
-
v_result := v_result || SUBSTR(v_source, v_rnd,1); --字符拼接
-
v_i := v_i + 1;
-
end loop;
-
return v_result;
- end F_GET_RANDOM;