gaoke 发表于 2018-9-25 08:25:38

Oracle生成随机码

  本人网站交友乐www.jyoule.com 需要经常生成随机的活动码,用于制作卡片密码或通过网络发送。活动码的生成规则是采用唯一的字符串开头后面是随机数字,比如AZ00001。使用oracle产生活动码速度极快,使用方便。1万个活动码只需要2~3秒就可以产生。下面是代码
  建一个临时表,用于存储生成的活动码
  create table T_RANDOM_CODE
  (
  code varchar2(20)
  );
  -- Create/Recreate primary, unique and foreign key constraints

  >  add constraint PK_T_RANDOM_CODE primary key (code);
  存储过程,根据输入的前缀和数量,生成不重复的活动码
  PROCEDURE create_random_code
  (
  p_number in number--活动码生成数量
  ,p_prefix in varchar2   --活动码前缀
  ) as
  v_countnumber;
  v_random number;
  v_num    number;
  v_code   varchar2(20);
  begin
  v_count := 0;
  WHILE v_count < p_number
  LOOP
  --活动码的位数可以在这里调整
  select dbms_random.value(10000000, 99999999)
  into v_random
  from dual;
  v_code := p_prefix || trunc(v_random);
  select count(*)
  into v_num
  from t_random_code
  where code = v_code;
  if v_num = 0 then
  insert into t_random_code (code) values (v_code);
  v_count := v_count + 1;
  end if;
  END LOOP;
  null;
  END create_random_code;

页: [1]
查看完整版本: Oracle生成随机码