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
      alter table T_RANDOM_CODE
        add constraint PK_T_RANDOM_CODE primary key (code);

     建立存储过程,根据输入的前缀和活动码数量,生成不重复的活动码
 

   PROCEDURE create_random_code
   (
      p_number in number  --活动码生成数量
     ,p_prefix in varchar2   --活动码前缀
   ) as
      v_count  number;
      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;

posted @ 2011-02-16 16:41  网友  阅读(698)  评论(1编辑  收藏  举报