日期:2014-05-17  浏览次数:20927 次

有关于批量增加数据库数据的SQL语句,麻烦大牛们给点快速的SQL语句
数据库 :oracle  

 表名: app_user

 字段:ID NAME LOGINNAME PASSWORD DWNM

 要求:ID:按顺序增加  
   
  NAME LOGINNAME PASSWORD 这个三个字段按顺序增加相同数据

  DWNM 所有数据保持一致


 例如: 增200 或 20000条 等~ 要求语句要快点

------解决方案--------------------
/* 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;