打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ORACLE里面怎么实现随机循环
你是不是想模拟一些随机的测试数据
我提供一个不错的脚本给你
create or replace procedure gen_data( p_tname in varchar2, p_records in number )
authid current_user
as
    l_insert long;
    l_rows   number default 0;
begin
    dbms_application_info.set_client_info( 'gen_data ' || p_tname );
    l_insert := 'insert /*+ append */ into ' || p_tname ||
                ' select ';
    for x in ( select data_type, data_length,
                nvl(rpad(
'9',data_precision,'9')/power(10,data_scale),9999999999) maxval
                 from user_tab_columns
                where table_name = upper(p_tname)
                order by column_id )
    loop
        if ( x.data_type in ('NUMBER', 'FLOAT' ))
        then
            l_insert := l_insert || 'dbms_random.value(1,' || x.maxval || '),';
        elsif ( x.data_type = 'DATE' )
        then
            l_insert := l_insert ||
                  'sysdate+dbms_random.value+dbms_random.value(1,1000),';
        else
            l_insert := l_insert || 'dbms_random.string(''A'',' ||
                                       x.data_length || '),';
        end if;
    end loop;
    l_insert := rtrim(l_insert,',') ||
                  ' from all_objects where rownum <= :n';
    loop
        execute immediate l_insert using p_records - l_rows;
        l_rows := l_rows + sql%rowcount;
        commit;
        dbms_application_info.set_module( l_rows || ' rows of ' || p_records, ''
);
        exit when ( l_rows >= p_records );
    end loop;
end;
/

你只要用下面的方法就可以实现你随机插入100条数据了
SQL> create table test( x varchar2(10) );
Table created.
SQL> exec gen_data('TEST', 100)
insert /*+ append */ into TEST select dbms_random.string('A',10) from
all_objects where rownum <= :n
PL/SQL procedure successfully completed.
SQL> select * from test;
X
----------
\JlLWWKogS
IUnoXAtHOR
...
100 rows selected.
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
如何将Oracle表里的数据导出成insert into脚本?
Oracle笔记 十、PL/SQL存储过程
几种游标的用法
ORACLE中DBMS_RANDOM包的用法
Merge Sort Join(合并排序连接)
Oracle 9i闪回查询(Flashback Query)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服