点击(此处)折叠或打开

  1. create or replace function F_GET_RANDOM
  2. (rnd_size in integer) return varchar2
  3. is
  4.   v_result varchar2(500); --结果
  5.   v_source varchar2(500); --生成随机码,字符源
  6.   v_source_len integer;
  7.   v_rnd integer;
  8.   v_i integer;
  9.   --函数用途:生成随机数
  10.   --author:程晓鹏
  11.   --date:2017.04.01
  12. begin
  13.   v_source := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  14.   v_source_len := length(v_source);
  15.   v_i := 0;
  16.   v_result := '';
  17.   while v_i < rnd_size loop
  18.        --dbms_random.value函数,取值范围为min<=value<max;因此取值范围为(1,v_source_len+1),不然最后一位不能随机取到
  19.        select to_number(trunc(dbms_random.value(1,v_source_len+1))) into v_rnd from dual; --获取随机数
  20.      v_result := v_result || SUBSTR(v_source, v_rnd,1); --字符拼接
  21.        v_i := v_i + 1;
  22.   end loop;
  23.   return v_result;
  24. end F_GET_RANDOM;


11-27 19:31