需求是产生一系列总和不变的随机数,用oracle存储过程实现。下面是脚本
--中间表 create table wei_test01 as select 1 as sss from dual; --结果表 create table wei_test02 as select * from wei_test01 where 1 = 2; --存储过程 --输入 times 客户输入数量 create or replace procedure random_w( times in number,v_out out varchar2) as v_sum number; begin v_out := 1; --初始化输出值 1 为正常 execute immediate 'truncate table wei_test01'; execute immediate 'truncate table wei_test02'; commit; for i in 1 .. times loop insert into wei_test01 select dbms_random.value from dual; commit; end loop; select sum(sss) into v_sum from wei_test01; insert into wei_test02 select sss*(10/v_sum) from wei_test01;-- 这里的 总和为10 自己设置 commit; end random_w; -- 测试结果表的总和 select sum(sss) from wei_test02; -- 测试结果表的总数 select count(1) from wei_test02;