在Oracle中生成随机数

Nir*_*bey 2 oracle random plsql oracle11g

在我的一个项目中,我必须生成一个从1到2000的随机数并将它们存储到表中.我必须在表中存储2000个值.我必须在表中存储不同的值.锄头在oracle中这样做.我正在使用Oracle 11g.

Kla*_*äck 7

如果必须存储介于1和2000之间的2000个唯一随机整数,则可以使用以下代码:

declare 
i pls_integer;
begin
for i in 1..2000 loop
  insert into my_table (my_column) values (i);
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)

(在1和2000之间只有一组2000个唯一的整数,它是从1到2000的每个数字的集合.)

如果要生成随机数,我建议使用DBMS_CRYPTO.RANDOMINTEGER.

要插入介于1和2000之间的随机数(允许重复),请将上面的插入内容替换为:

insert into my_table (my_column) values (MOD(DBMS_CRYPTO.RANDOMINTEGER, 2000) + 1);
Run Code Online (Sandbox Code Playgroud)

在早期版本(Oracle 10及更早版本)中,使用DBMS_RANDOM包.