随笔-16  评论-84  文章-1  trackbacks-0
最近在学习存储过程,以前在项目中没有怎么接触过!

我通过存储过程像数据库中批量添加一千万(100000000)条记录,结果PL/SQL很长时间没有反映,结果不得已通过脚本杀掉当前进程,我重新通过存储过程插入10000条数据。

建表脚本:
 1--删除用户表
 2DROP TABLE T_PORTAL_USER;
 3
 4--创建用户表
 5CREATE TABLE T_PORTAL_USER
 6(
 7    id NUMBER PRIMARY KEY-- 用户表示
 8    username VARCHAR2(24NOT NULL,-- 用户名
 9    password VARCHAR2(24NOT NULL,-- 密码
10    realname VARCHAR2(24NOT NULL,-- 真实姓名
11    sex VARCHAR2(2DEFAULT '0',-- 性别 "0":Male "1":Female
12    registerDate TIMESTAMP NOT NULL,-- 注册日期
13    state VARCHAR2(2NOT NULL -- 账号状态 "0":启用  "1":注销
14)
15
16--删除用户表序列
17DROP SEQUENCE SEQ_T_PORTAL_USER;
18
19--创建用户表序列
20CREATE SEQUENCE SEQ_T_PORTAL_USER
21START WITH 1
22INCREMENT BY 1
23NOMAXVALUE
24CACHE 20


-- 批量新增一万条用户

 1-- 批量新增一万条用户
 2CREATE OR REPLACE PROCEDURE PROC_USER_CREATE_BAT
 3AS
 4    startTime VARCHAR2(32);--开始时间
 5    endTime VARCHAR2(32);--结束时间
 6BEGIN
 7  SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff'INTO startTime FROM DUAL;
 8  DBMS_OUTPUT.PUT_LINE('Start Time: '||startTime);
 9  FOR i in 1..10000 LOOP
10     INSERT INTO T_PORTAL_USER VALUES(SEQ_T_PORTAL_USER.NEXTVAL,'owen'||i,'123456','gekunjin'||i,'0',sysdate,'0');
11  END LOOP;
12  SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss:ff'INTO endTime FROM DUAL;
13  DBMS_OUTPUT.PUT_LINE('End Time: '||endTime);
14END PROC_USER_CREATE_BAT;
posted on 2010-11-27 14:41 absolute 阅读(3688) 评论(1)  编辑  收藏 所属分类: DataBase

评论:
# re: 存储过程学习-批量插入10000条数据进数据库 2014-06-16 13:52 | 羊肉汤
好  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: