本人網站交友樂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;