`
hanjava
  • 浏览: 32364 次
  • 性别: 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
分享到:
评论

相关推荐

    存储过程(循环插入数据)

    本文将深入探讨如何利用存储过程中的循环结构——FOR LOOP,来批量插入数据,并讨论在不同环境中执行存储过程时可能遇到的问题。 在Oracle中,存储过程可以通过PL/SQL(Procedural Language extensions to SQL)...

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

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

    存储过程游标用于批量的插入数据

    ### 存储过程与游标的综合应用:批量插入数据 #### 一、存储过程简介 在数据库管理系统(DBMS)中,存储过程是一种预编译的SQL代码块,它可以接受输入参数并返回输出值,类似于编程语言中的函数或过程。通过创建...

    mysql循环添加数据(存储详细)

    接下来,我们将为每个表创建一个对应的存储过程,用于实现循环插入数据的功能。 #### 1. 存储过程 - MyISAM ```sql DELIMITER @ CREATE PROCEDURE insert_isam(IN item INTEGER) BEGIN DECLARE counter INT; SET...

    MSSQL 循环插入语句

    本文档介绍了一种利用存储过程实现循环插入数据的方法,并且通过两个自定义函数`Get_StrArrayStrOfIndex`和`Get_StrArrayLength`来支持这一功能。此方法适用于需要根据动态生成的数据列表进行批量插入的场景。 ####...

    使用存储过程实现循环插入100条记录

    本话题将详细讲解如何利用存储过程实现循环插入100条记录,这对于批量数据处理非常实用,特别是在MySQL数据库中。 首先,我们来看一下给出的示例代码: ```sql mysql> delimiter $$ // 更改分隔符,避免与存储过程...

    存储过程使用游标实现循环

    本篇文章将详细探讨如何利用存储过程结合游标来实现对查询结果集的循环处理。 #### 一、理解存储过程与游标 1. **存储过程**:存储过程是一种预编译的SQL脚本,存储在数据库服务器上。它可以接收输入参数,执行一...

    sql存储过程学习,详细的解说存储过程的语法,结构和用法。

    SQL存储过程是数据库管理系统中的一种重要工具,它允许程序员和数据库管理员预先定义并存储一系列复杂的SQL语句,以便后续调用...通过实践和深入理解,您可以充分利用存储过程的优势,创建高效、安全的数据库应用程序。

    oracle数组存储过程批量插入.docx

    在Java环境中,批量插入数据的处理方式略有不同。首先,需要在数据库中创建一个对象类型`BUT_UKBNOV_CTC_ORDER_REC`,它与Java Bean对象相对应。接着,创建一个数组类型`BUT_UKBNOV_CTC_ORDER_TAB`,它是`BUT_UKBNOV...

    存储过程应用例程 存储过程应用例程

    通过学习这个应用例程,你可以了解到如何根据实际业务需求设计和优化存储过程,如何处理异常,如何进行参数传递,以及如何利用存储过程实现更复杂的数据处理任务,如聚合计算、条件判断和循环等。 总的来说,这个...

    MySQL存储过程学习

    通过学习和实践,我们可以更有效地利用存储过程来优化数据库性能,提高代码质量,同时减少潜在的错误和安全风险。这个"MySQL存储过程学习"资料将帮助你深入理解这一主题,并提供实践指导,以助你在数据库管理领域更...

    sqlserver 存储过程 函数 常用知识点

    - **定义**:存储过程是一组预编译的SQL语句,可以接受参数,执行特定任务,如数据查询、更新或插入等。 - **优点**:提高性能(因为编译只需一次),增强安全性(可以通过权限控制访问),减少网络流量(一次调用...

    SQL Server常用存储过程及示例

    在SQL Server中,存储过程是预编译的SQL语句集合,它们允许开发人员封装复杂的逻辑,提高数据库操作的效率和安全性。...通过合理利用存储过程,可以优化性能、增强安全性,同时简化应用程序与数据库的交互。

    SQL2005动态表无限级分类存储过程

    总的来说,这些存储过程的核心是通过动态生成SQL语句来处理无限级分类的增删改查操作,它们利用了SQL Server 2005的特性和功能,如递归查询、事务管理等,确保了在复杂的数据结构中的数据完整性和一致性。...

    codesmith存储过程生成模板

    对于"增"操作,存储过程通常接收新数据作为参数,然后插入到相应的表中。在Codesmith模板中,我们需要指定表名、字段名及对应的参数,模板引擎会根据这些信息自动生成存储过程的SQL语句。例如,`INSERT INTO 表名 ...

    DB2存储过程介绍

    1. **数据处理**:存储过程可以用于执行复杂的业务逻辑,如批量插入、更新或删除数据,甚至进行数据转换和清洗。 2. **性能优化**:由于存储过程在服务器端执行,减少了网络通信,提升了性能。 3. **安全性**:通过...

    存储过程学习1

    -- 循环插入数据 i := 1; remark := 'level1'; WHILE i pkId := i; nodeName := name || TO_CHAR(i); str_sql := 'INSERT INTO z_tree_node (id, name, pid, remark) VALUES (:1, :2, NULL, :3)'; EXECUTE ...

    mysql存储例程、存储过程、存储函数进阶学习

    8. **案例实践**:通过实际项目中的案例分析,例如在订单系统、库存管理系统中如何利用存储过程和函数来简化代码,提高效率,加深理论知识的理解。 9. **调试与日志**:学会使用MySQL的调试工具,如EXPLAIN,以及...

    oracle存储过程学习资料

    在存储过程中,可以使用游标处理多行记录,结合FOR循环进行迭代操作,如更新或插入多行数据。 6. **事务控制**: 存储过程内可以使用`COMMIT`和`ROLLBACK`来控制事务边界,确保数据的一致性。 7. **异常处理**:...

    sybase的存储过程编写经验和方法

    在IT领域,特别是数据库管理与开发中,Sybase作为一个历史悠久且功能强大的数据库系统,其存储过程(Stored Procedure)的编写技巧与方法对于提高数据库性能、确保数据安全性以及简化复杂操作流程具有重要意义。...

Global site tag (gtag.js) - Google Analytics