微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在oracle产生一系列总和不变的随机数

需求是产生一系列总和不变的随机数,用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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐