`
hanjava
  • 浏览: 31090 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

利用存储过程循环插入数据

 
阅读更多
//第一种方法
create or replace procedure p_batchCreaeStaff
(
i_staffid in varchar2,
i_pwd in  varchar2,
i_name in varchar2,
i_state in varchar2,
i_org_id in varchar2,
i_roleId  in varchar2,

i_staffNum  in number,
o_status    out number,
o_errMsg  OUT VARCHAR2
)
is
  i number :=0;
  v_num number(5):=100;
  v_staffNum number(10);
  v_staffId varchar2(100);
  v_name varchar2(100);
  v_post number(10) := 12;
  ls_flag varchar2(10);
  ln_start number(10);

begin
ls_flag := 'F';
v_staffNum :=i_staffNum;
WHILE ls_flag = 'F' LOOP
  --每次循环转换100条记录
  ln_start := 0 ;
  for i in 1..v_staffNum loop
          v_staffId  :=  i_staffid + i;
          v_name       := i_name + i;
          --插入人员信息
          insert into t_sys_staffbasicinfo(
          staff_id,
          staff_password,
          STAFF_NAME,
          STAFF_STATE,
          post,
          ORGA_ID)
          values
          (
          v_staffId,
          i_pwd,
          v_name,
          i_state,
          v_post,
          i_org_id         
          );
         
         --插入人员角色
          insert into t_sys_staffrole
          (
            role_id,
            staff_id
           
           
           )
           values
          (
            i_roleId,
            v_staffId
          );
        
     ln_start := ln_start + 1 ; 
     END LOOP;
  commit;
 
  IF ln_start = 1000 THEN
   ls_flag := 'F';
  ELSE
   ls_flag := 'T';
  END IF;
 
END LOOP;

exception

   when others then
       o_errMsg := SQLERRM;
       rollback;
  
end p_batchCreaeStaff;
/

*********************************************************
//第二种方法
create or replace procedure p_batchCreaeStaffInfo
(
i_staffid in varchar2,
i_pwd in  varchar2,
i_staffName in varchar2,
i_state in varchar2,
i_post in varchar2,
i_org_id in varchar2,
i_roleId  in varchar2,

i_insertNum  in number,
i_CommitNum in number,
o_status    out number,
o_errMsg  OUT VARCHAR2
)
is
  i number :=0;
  v_staffId varchar2(100);
  v_staffName varchar2(100);
  ln_start number(10);
begin
o_status := 0;

  --每次循环转换N条记录
  ln_start := 0 ;
  for i in 1..i_insertNum loop
          v_staffId  :=  i_staffid + i;
          v_staffName       := i_staffName + i;
          --插入人员信息
          insert into t_sys_staffbasicinfo(
          staff_id,
          staff_password,
          STAFF_NAME,
          STAFF_STATE,
          post,
          ORGA_ID)
          values
          (
          v_staffId,
          i_pwd,
          v_staffName,
          i_state,
          i_post,
          i_org_id         
          );
         
         --插入人员角色
          insert into t_sys_staffrole
          (
            role_id,
            staff_id
           )
           values
          (
            i_roleId,
            v_staffId
          );
        
     ln_start := ln_start + 1 ;
     IF ln_start = i_CommitNum THEN
       ln_start := 0;
       commit;
     END IF;
  END LOOP;
 

exception

   when others then
       o_errMsg := SQLERRM;
       o_status := -1;
       rollback;
  
end p_batchCreaeStaffInfo;
/


--参数值
1000

DA4FB5C6E93E74D3DF8527599FA62642

1000

1

572


1184

100
分享到:
评论

相关推荐

    百万数据批量插入存储过程

    mysql 数据库已存储过程插入一千万条测试数据!利用项目即将上限需要,可以完全系统的测试项目性能!里面又完整的文档和各项说明:打开文档就可以实际操作。

    SQL批量插入数据几种方案的性能详细对比

    技术方案一:压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入。很明显,这种方式效率并不高,于是有了前面的两位同事讨论...

    数据结构_线性表的链式存储

    数据结构_线性表的链式存储 实验目的 1. 掌握线性表的链式存储结构。 2. 能熟练地利用链式存储结构实现线性表的基本操作。 3. 能熟练地掌握链式存储结构中算法的实现。 实验内容 1. 分别用头插法和尾插法建立带头...

    存储过程的安全及性能优化

    存储过程的安全及性能优化 ... 临时表中插入数据过大,可使用select into 代替 create table  使用了临时表,要在存储过程最后显式删除  避免使用大临时表与其他大数据量表的连接查询和修改

    数据结构实验三(循环队列基本操作)题目和源程序

    实验内容 1.任意输入队列长度和队列中的元素值,构造一个顺序循环队列,对其进行清空、插入新元素、返回队头元素以及删除队头元素操作...编写程序选择循环队列作为存储结构模拟整个过程,并依次输出出列的各人的编号。

    数据机构C语言用双向循环链表实现通讯簿

    利用双向循环链表作为储存结构设计并实现一个通讯录程序。可以实现信息的添加、插入、删除、查询和统计等功能 1.2 课程设计要求 (1) 每条信息至少包含:姓名(name)、街道(street)、城市(city)、邮编、(eip...

    c语言数据结构实验:掌握线性表的链式存储结构 熟练掌握循环链表的存储特征和建立方法,掌握线性表的链式存储结构 下面是源码的txt

    2、已知由单链表表示的线性表中,含有三类字符的数据元素(如:字母、数字和其它字符),设计算法构造三个以循环链表示的线性表,使每一个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的空间。...

    数据结构的上机作业答案

    1) 以书中10-4的数据,程序实现直接插入排序,折半排序和2路插入排序。 2) 以书中图10.6的数据,程序实现快速排序。 3) 以书中图10.9的数据,程序实现树形选择排序。 4) 以书中图10.13的数据,程序实现归并排序...

    长正整数相减(数据结构-循环链表)

    //在u结点后插入一个新的NODE,其值为num } int compare(NODE *p,NODE *q){ //比较两个数的大小 } NODE *subint(NODE *p,NODE *q){ //完成两个链表减法操作返回指向|*p-*q|结果的指针 } void printint(NODE *s){ ...

    循环队列模版类

    循环队列模版类CircularQueue,充分利用内存资源实现数据类型的存储及使用

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 变量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术...

    《数据结构》实验

    2、已知由单链表表示的线性表中,含有三类字符的数据元素(如:字母、数字和其它字符),设计算法构造三个以循环链表示的线性表,使每一个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的空间。...

    循环队列(C语言实现)

    循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一...

    顺序表数据结构算法实现

    顺序表c语言程序,实现了顺序表算法的程序实现!!

    精通sql结构化查询语句

    11.1.4 由VALUES关键字插入多行数据 11.1.5 使用SELECT语句插入数据 11.1.6 通过视图插入数据 11.1.7 使用子查询插入数据 11.2 数据的更新操作 11.2.1 UPDATE语句的基本语法 11.2.2 使用UPDATE语句更新指定的列值 ...

    软件工程之专题九:数据结构知识

    顺序栈即栈的顺序存储结构是,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时设指针top指示栈顶元素的当前位置。 栈也可以用链表实现,链式存储结构的栈简称链栈。若同时需两个以上的栈,则最好...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 变量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术...

    数据结构与算法.xmind

    当递归到规模足够小时,利用插入排序 归并前判断一下是否还有必要归并 只在排序前开辟一次空间 基数(桶)排序 思想 分配,回收(分配到不同的位置上,然后回收)..不断分配..回收来...

    《数据结构 1800题》

    11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )【上海海运学院 1999 一、1(1分)】 12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。( ) 【华南理工大学 2002...

Global site tag (gtag.js) - Google Analytics