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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章