数据库 :oracle    表名: app_user 字段:ID  NAME  LOGINNAME PASSWORD  DWNM 要求:ID:按顺序增加   
    
       NAME  LOGINNAME PASSWORD   这个三个字段按顺序增加相同数据       DWNM  所有数据保持一致
 例如:  增200 或 20000条 等~  要求语句要快点

解决方案 »

  1.   

    select rownum,rownum+1,rownum+1,rownum+1,1 from dual connect by leve<100
      

  2.   

    用批量绑定forall是最快的
    /* Formatted on 2011/11/08 17:23 (Formatter Plus v4.8.8) */
    DECLARE
       TYPE id_table IS TABLE OF app_user.ID%TYPE;
       t_id          id_table             := id_table ();
       TYPE name_table IS TABLE OF app_user.NAME%TYPE;
       t_name        name_table           := name_table ();
       TYPE loginname_table IS TABLE OF app_user.loginname%TYPE;
       t_loginname   loginname_table      := loginname_table ();
       TYPE password_table IS TABLE OF app_user.PASSWORD%TYPE;
       t_password    password_table       := password_table ();
       v_dwnm        app_user.dwnm%TYPE;
    BEGIN
       v_dwnm := 'DWNM';   FOR i IN 1 .. 2000--2000条,可以随便改
       LOOP
          t_id.EXTEND;
          t_id (t_id.COUNT) := i;
          t_name.EXTEND;
          t_name (t_name.COUNT) := 'Name' || i;
          t_loginname.EXTEND;
          t_loginname (t_loginname.COUNT) := 'Login' || i;
          t_password.EXTEND;
          t_password (t_password.COUNT) := 'Password' || i;
       END LOOP;   FORALL ind IN t_id.FIRST .. t_id.LAST
          INSERT INTO app_user
                      (ID, NAME, loginname,
                       PASSWORD, dwnm
                      )
               VALUES (t_id (ind), t_name (ind), t_loginname (ind),
                       t_password (ind), v_dwnm
                      );
       COMMIT;
    END;
      

  3.   


     2730!   我用PL/SQL  运行语句时,提示:     ORA-00001 违反唯一约束条件(ZHKWUSER.SYS_C009120)
         ORA-06512  在line27
      肿么回事?
     
      

  4.   

    估计是表中本来就有数据,或者你执行这段SQL一次以上.
      

  5.   

    /* Formatted on 2011/11/8 19:03:21 (QP5 v5.115.810.9015) */
    DECLARE
       TYPE id_table IS TABLE OF app_user.ID%TYPE;
       t_id          id_table := id_table ();
       TYPE name_table IS TABLE OF app_user.NAME%TYPE;
       t_name        name_table := name_table ();
       TYPE loginname_table IS TABLE OF app_user.loginname%TYPE;
       t_loginname   loginname_table := loginname_table ();
       TYPE password_table IS TABLE OF app_user.PASSWORD%TYPE;
       t_password    password_table := password_table ();
       v_dwnm        app_user.dwnm%TYPE;
       v_max         NUMBER;
    BEGIN
       v_dwnm := 'DWNM';   SELECT   NVL (MAX (id), 0) + 1 INTO v_max FROM app_user;   FOR i IN v_max .. v_max + 2000                          --2000条,可以随便改
       LOOP
          t_id.EXTEND;
          t_id (t_id.COUNT) := i;
          t_name.EXTEND;
          t_name (t_name.COUNT) := 'Name' || i;
          t_loginname.EXTEND;
          t_loginname (t_loginname.COUNT) := 'Login' || i;
          t_password.EXTEND;
          t_password (t_password.COUNT) := 'Password' || i;
       END LOOP;   FORALL ind IN t_id.FIRST .. t_id.LAST
          INSERT INTO app_user (ID,
                                NAME,
                                loginname,
                                PASSWORD,
                                dwnm)
            VALUES   (t_id (ind),
                      t_name (ind),
                      t_loginname (ind),
                      t_password (ind),
                      v_dwnm);   COMMIT;
    END;
      

  6.   


          select level,'scott'||level,'scott'||level,'scott'||level,'dw' from dual  connect by level < 2000
      

  7.   

    select level,'name'||level,'logname'||level,'password'||level,'dw' from dual  connect by level < 2000