oracle 随机生成12位不重复数据,求高手写个存储过程。高分!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 随机生成12位不重复数据,求高手写个存储过程。高分!!!相关的知识,希望对你有一定的参考价值。
我以前生成的随机数 存在在表 code_table_01,字段为code.(数据如:
541662025362)
现在我想写一个过程如
create or replace procedure insert_random_Code(maxNum in number)
传入的参数为 想要生成随机数的条数,比如1W条
过程的功能就是 生成XX条不重复且不在code_table_01表内的12位随机数,存放咋code_table_02
as
v_code number;
v_count number;
i number;
begin
i:=0;
for i in 0..maxNum-1 loop
select trunc(dbms_random.value(100000000000,1000000000000)) into v_code from dual;
select count(*) into v_count from code_table_01 where code=v_code;
if v_count=0 then
select count(*) into v_count from code_table_02 where code=v_code;
if v_count=0 then
insert into code_table_02(code)values(v_code);
i:=i+1;
end if;
end if;
end loop;
if i=maxNum then
commit;
elsif
roolback;
end if;
end;
求推荐 求采纳 求赞追问
谢谢你的回答,很有帮助。但是我还有个问题
select trunc(dbms_random.value(100000000000,1000000000000)) into v_code from dual;
这个应该限制为 1-1000000000000.不足12位的前面用0补充。这个怎么实现呢
create or replace procedure insert_random_Code(maxNum in number)
as
v_code varchar2(20);
v_count number;
i number;
begin
i:=0;
for i in 0..maxNum-1 loop
select lpad(trunc(dbms_random.value(1,1000000000000)),12,'0') into v_code from dual;
select count(*) into v_count from code_table_01 where code=v_code;
if v_count=0 then
select count(*) into v_count from code_table_02 where code=v_code;
if v_count=0 then
insert into code_table_02(code)values(v_code);
i:=i+1;
end if;
end if;
end loop;
if i=maxNum then
commit;
elsif
roolback;
end if;
end;
大神 为什么我 编译不能通过呢。我给你2个表的语句,你帮我调试下呢
create table CODE_TABLE_02
(
CODE VARCHAR2(12)
)
create table CODE_TABLE_01
(
CODE VARCHAR2(12)
)
呵呵 不好意思哈;有2个地方有点问题,一时rollback写错;二是改成while循环
下面是新的代码:
create or replace procedure insert_random_Code(maxNum in number)
as
v_code varchar2(20);
v_count number;
i number;
-- n number;
begin
i:=0;
while i<=maxNum-1 loop
select lpad(trunc(dbms_random.value(1,1000000000000)),12,'0') into v_code from dual;
select count(*) into v_count from code_table_01 where code=v_code;
if v_count=0 then
select count(*) into v_count from code_table_02 where code=v_code;
if v_count=0 then
insert into code_table_02(code)values(v_code);
i:=i+1;
end if;
end if;
end loop;
if i=maxNum then
commit;
else
rollback;
end if;
end;
as
SELECT dbms_random.value('u',12) FROM dual;
java随机生成6位不重复的字符串
代码如下:
public String getlinkNo()
String linkNo = "";
// 用字符数组的方式随机
String model = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char[] m = model.toCharArray();
for (int j = 0; j < 6; j++)
char c = m[(int) (Math.random() * 36)];
// 保证六位随机数之间没有重复的
if (linkNo.contains(String.valueOf(c)))
j--;
continue;
linkNo = linkNo + c;
return linkNo;
以上是关于oracle 随机生成12位不重复数据,求高手写个存储过程。高分!!!的主要内容,如果未能解决你的问题,请参考以下文章