Student(student_id, first_name, last_name,GPA,dept_name)
Enrolment(student_id, course_id, grade)
Course(course_id, title,dept_name)
Change_log(student_id, course_id, old, new,date)
编写一个PL/SQL程序, 随机地向student表中插入10000条记录
哪位高手帮帮忙呀~~~不胜感激(*^__^*)。

解决方案 »

  1.   

    随机使用dbms_random包的函数即可
    但要造出比较真实的就难了
    我上个月刚造了一个500万条记录的表
    建了一个常用字字库表,分析了数百万个姓名分析常用字在姓和名中出现的频率
    给自己出难题而已,只是要测试数据的话不用这么麻烦,嘿嘿``
      

  2.   

    随机不会啊,批量加,使数据都不同倒是简单:
    create or replace procedure proc_test_insert
    as 
    var_send_id number;
    BEGIN
    for i in 1..10000 loop
    insert into Student(student_id, first_name, last_name,GPA,dept_name) 
     values(i,'FNAME'||to_char(i),'LNAME'||to_char(i),'GPA'||to_char(i),'DNAME'||to_char(i));
    end loop;
    commit;
    end proc_test_insert;/
      

  3.   


    我上次造了4000万数据测分区表,后来直接drop掉表没加那个清数据的参数,现在硬盘6G空间还在那占着呢,。。又不敢直接delete掉那文件,不知道怎么办
      

  4.   


    create or replace procedure p_student_add
    is
    begin         insert into Student(student_id, first_name, last_name,GPA,dept_name)
                   select ceil(dbms_random.value(1,1000000)),
                        dbms_random.string('w',4),
                        dbms_random.string('x',4),
                        dbms_random.string('x',4),
                        dbms_random.string('i',4)
                   from dual
                connect by rownum <= 10000;
        
           commit;end;
      

  5.   

    create or replace procedure p_student_add 
    is 
    begin         insert into Student(student_id, first_name, last_name,GPA,dept_name) 
                  select ceil(dbms_random.value(1,1000000)), 
                        dbms_random.string('w',4), 
                        dbms_random.string('x',4), 
                        dbms_random.string('x',4), 
                        dbms_random.string('i',4) 
                  from dual 
                connect by rownum <= 10000; 
        
          commit; end; 拿这个可以随便改了,
      

  6.   


    你是这个意思不?[TEST@ora10gr1#2009-12-18/08:13:29] SQL>drop table t3;Table dropped.[TEST@ora10gr1#2009-12-18/08:13:37] SQL>drop table TEST_OLAP;Table dropped.[TEST@ora10gr1#2009-12-18/08:13:45] SQL>show recyclebin
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    ---------------- ------------------------------ ------------ -------------------
    T3               BIN$IBXdFUBvQtqqhwN5gf4NjQ==$0 TABLE        2009-12-18:08:13:37
    TEST_OLAP        BIN$2/CexDufRzW6HUfyMDSIQg==$0 TABLE        2009-12-18:08:13:45
    [TEST@ora10gr1#2009-12-18/08:13:48] SQL>purge table t3;Table purged.[TEST@ora10gr1#2009-12-18/08:13:55] SQL>show recyclebin
    ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
    ---------------- ------------------------------ ------------ -------------------
    TEST_OLAP        BIN$2/CexDufRzW6HUfyMDSIQg==$0 TABLE        2009-12-18:08:13:45
      

  7.   

    偶顺便问一个问题,
    如果想生存随机字符串,长度为11的,以某些字串打头的,怎么写??
    我这样写了不行呢,谢谢了
    select dbms_random.string('1KA',11)from dual;
      

  8.   

    INSERT INTO Student
      (student_id, first_name, last_name,GPA, dept_name)
      SELECT dbms_random.random,--在这个函数基础上你可以随便改
             dbms_random.random,--在这个函数基础上你可以随便改
             dbms_random.random,--在这个函数基础上你可以随便改
             dbms_random.random,--在这个函数基础上你可以随便改
             dbms_random.random)--在这个函数基础上你可以随便改
      CONNECT BY LEVEL < 100001;
    因为不知道各个字段的类型,都这样写了 ,你可以通过to_char 或者再加上“||”这样来自己造!
      

  9.   

    偶顺便问一个问题, 
    如果想生存随机字符串,长度为11的,以某些字串打头的,怎么写?? 
    我这样写了不行呢,谢谢了 
    select dbms_random.string('1KA',11)from dual;上述问题是这样的:dbms_random.string('1KA',11)的第一参数是字符类型的,不能是字符串。你想以某个字母开头,可以这样的:
    select '1KA'||dbms_random.string('m',11)from dual;
    这样的话所有的都是以'1KA'开头的了!