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;