如何在sql中一次性插入随机数

时间:2016-07-29 07:57:21

标签: sql oracle plsql

请考虑以下程序

begin
for i in 0..99
loop
insert into cx_vf_Test_ids values (100+i,'STB','N');
end loop;
commit;
end;

它将按顺序从100到199插入100个值,对于每个值'STB'和'N'将保持相同。

我的要求是插入我从团队中获取的随机值 101,187,193,138,189 ......在这种情况下,我只有100个值,STB和N将保持相同

请提出你的建议。

3 个答案:

答案 0 :(得分:0)

create table temp
(
num number(4),
varc varchar(5),
varc1 varchar (5))
;
begin
for i in 0..99
loop
insert into temp values (trunc(dbms_random.value(100,199)),'STB','N');
end loop;
end;

输出:select * from temp;

109 STB N
163 STB N
169 STB N
137 STB N
145 STB N
184 STB N
107 STB N

所以你必须做错事。它在我的SQLDev中完美运行。

答案 1 :(得分:0)

让您的团队将“随机”值插入表中,然后进行插入选择。例如。这样:

create table so58a_t (num number);

insert into so58a_t values (101);
insert into so58a_t values (187);
insert into so58a_t values (193);
insert into so58a_t values (138);
insert into so58a_t values (189);

create table so58b_t (num number, foo varchar2(10), bar varchar2(10));

insert into so58b_t(num, foo, bar)
select
 100 + num
,'STB'
,'N'
from so58a_t;

产生结果:

select * from so58b_t order by num;

       NUM FOO        BAR
---------- ---------- ----------
       201 STB        N
       238 STB        N
       287 STB        N
       289 STB        N
       293 STB        N

表也可以是外部表

答案 2 :(得分:0)

生成带小数的随机数的示例:

DECLARE
    N NUMBER;
BEGIN
    N := DBMS_RANDOM.VALUE(100, 199);
    --Number without deimals 
    N := TRUNC(N, 0);
    -- Print output on screen
    DBMS_OUTPUT.PUT_LINE(N);
END;
/