关于存储过程:向表中随机插入1000条数据

JnGg366 2017-07-22 08:46:20

...全文
2319 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mysine 2018-02-09
  • 打赏
  • 举报
回复
优化一下随机抽取时间的语句
select  rownum serialno,--自动增长序列
        dbms_random.string('$', 6) filepath,--随机取6个字赠
        trunc(dbms_random.value(4, 9999)) partid,--随机取4个数字
        'YTCZ0'||trunc(dbms_random.value(60001,60020)) staffno,--从YTCZ060001...YTCZ060020中随机抽取
        to_date('20060804','YYYYMMDD')-
        trunc(dbms_random.value(0,
        to_date('20060804','YYYYMMDD')-
        add_months(to_date('20060804','YYYYMMDD'),-6))
        ) --从2006年8月4日前的6个月内,随机抽取
   from dual
 connect by level <= 1000;
mysine 2018-02-09
  • 打赏
  • 举报
回复
如下SQL是随机生成1000记录,其它的都简单了,自己写吧。
select  rownum serialno,--自动增长序列
        dbms_random.string('$', 6) filepath,--随机取6个字赠
        trunc(dbms_random.value(4, 9999)) partid,--随机取4个数字
        'YTCZ0'||trunc(dbms_random.value(60001,60020)) staffno,--从YTCZ060001...YTCZ060020中随机抽取
        to_date(trunc(
        dbms_random.value(
        to_char(add_months(to_date('20060804','YYYYMMDD'),-6),'J'),
        to_char(add_months(to_date('20060804','YYYYMMDD'),-6),'J')+
        (to_date('20060804','YYYYMMDD')-add_months(to_date('20060804','YYYYMMDD'),-6))
        )
        ),'J') --从2006年8月4日前的6个月内,随机抽取
   from dual
 connect by level <= 1000;
  • 打赏
  • 举报
回复
create or replace procedure proc_random is v_FilePath varchar2(200);--录制文件路径,随机6个字母 v_PartId varchar2(200);--区分字段 格式MMDD,随机4个数字 v_StaffNo varchar2(200);--业务代表号,从YTCZ060001-YTCZ060020随机生成 v_RecordTime date;--录制时间,从20170804前6个月随机生成 x number :=0;--循环 begin --循环执行500次 while x<=50000 loop x :=x+1; --生成6个字母 select dbms_random.string('U', 6) into v_FilePath from dual; --生成4个数字 select round(dbms_random.value(1000,9999)) into v_PartId from dual; --生成业务编号 select 'YTCZ0600'||to_char(round(dbms_random.value(1,20)),'fm00') into v_StaffNo from dual; --生成时间 select to_date(trunc(dbms_random.value(to_number(to_char(to_date('20170801','yyyymmdd'),'J')), to_number(to_char(to_date('20170201','yyyymmdd') + 1,'J')))), 'J') into v_RecordTime/*+ (trunc(dbms_random.value(9, 17)) * 3600 + trunc(dbms_random.value(0, 60)) * 60 + trunc(dbms_random.value(0, 60))) / (24 * 60 * 60)*/ from dual; -- 向t_lzinfor表插入数据 insert into t_lzinfor(seriaino,filepath,partid,staffno,recordtime) values(t_lzinfor_seq.nextval,v_FilePath,v_PartId,v_StaffNo,v_RecordTime); commit; end loop; end proc_random;
卖水果的net 2017-07-22
  • 打赏
  • 举报
回复
楼主是哪个存储过程遇到麻烦了?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧