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

pl/sql batch update

阅读更多
组里有同事说有一个需要大批量跟新数据库中的功能,批量修改50万数据很慢,于是我改造了一下她的代码,从打开游标的单条修改,改成了批量修改。性能得到了满足。

function F_updatebankdata
(
    i_Bankbatchs          IN          T_bankdatacollect.Bankbatchs%type, --批次号
    o_returnstr           out         varchar2
)
return number--0成功1失败
is
       type detailid_tab is table of varchar2(20);
       type bankcode_tab is table of varchar2(3);
       type bankaccount_tab is table of varchar2(50);
       type bankno_tab is table of varchar2(2);
       
       detailids                           detailid_tab;
       bankcodes                           bankcode_tab;
       bankaccounts                        bankaccount_tab;
       banknos                             bankno_tab;
 
       cursor c_T_bankdatadetail is
         select b.Bankdatadetailid,b.bankcode,b.bankaccount,b.bankno
           from T_bankdatadetail b
          where b.bankbatchs = i_Bankbatchs;
begin
    l_effrow := 0;
    open c_T_bankdatadetail;
        loop
          fetch c_T_bankdatadetail 
          bulk collect into detailids,bankcodes,bankaccounts,banknos  limit 10000;
          exit when detailids.count() = 0;
                 l_effrow := l_effrow + detailids.count();
                 forall i in detailids.first .. detailids.last
                      update T_bankcyclebills a
                         set  a.bankdatadetailid = detailids(i)
                       where  a.bankbatchs = i_Bankbatchs
                         and  a.bankcode = bankcodes(i)
                         and  a.bankaccount = bankaccounts(i)
                         and  a.bankno = banknos(i);
                  commit;     
        end loop;
     close c_T_bankdatadetail;
    return 0;
exception
     when others then
       return 1;
end;
分享到:
评论

相关推荐

    浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    在PL/SQL编程中,批处理(Batch Processing)是一种优化技术,它能够显著提升数据库操作的性能,尤其是在处理大量数据时。本篇文章将深入探讨PL/SQL中的两种关键批处理语句:BULK COLLECT 和 FORALL,以及它们如何...

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    <update id="batchUpdate" parameterType="java.util.List"> ;" separator=";"> UPDATE test test = #{item.test} + 1 </set> WHERE id = #{item.id} </foreach> </update> ``` 在这个配置中,`collection`...

    PLSQL.Developer v11.0.4.1774 主程序+ v11中文包+keygen

    When using date/time selector in the SQL result grid, PL/SQL Developer would lose focus The file format encoding preference "Always as UTF8" did not work for the Program Window Crash recovery saved ...

    ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt

    使用PL/SQL语言中的游标和循环结构,逐条记录地读取并更新数据。 ```plsql declare l_varID varchar2(20); l_varSubName varchar2(30); cursor mycur is select T2.Id, T2.Subobject_Name from T2; begin open ...

    sqlplus 批处理

    SQLPLUS是Oracle公司提供的一个交互式查询和脚本执行工具,可以直接连接到Oracle数据库并执行SQL语句、PL/SQL块,还可以创建和运行批处理脚本。它的功能强大且灵活,适用于各种数据库管理和维护工作。 2. 批处理的...

    Oracle数据库添加 更新 游标 过程 Java Project

    Oracle数据库是世界上最流行的数据库管理系统之一,广泛用于企业级应用开发,...这涵盖了数据库基础、SQL语法、PL/SQL编程以及Java中的JDBC应用。理解和掌握这些知识点,对于进行企业级的Java数据库应用开发至关重要。

    通过bat实现oracle11g用户创建、授权、dmp文件导入,以及directory路径修改,文件复制、文件夹创建等功能

    在Oracle中,创建用户涉及使用SQL命令如`CREATE USER`,通常在SQL*Plus或PL/SQL Developer等工具中执行。但在BAT脚本中,我们可以调用`sqlplus`命令行工具来执行SQL语句,例如: ```batch sqlplus / as sysdba ...

    高级oracle sql

    - **异常处理(Exception Handling)**:使用PL/SQL块捕获并处理异常情况。 - **日志与审计(Logging and Auditing)**:记录重要的数据库操作,以便于后期审计和故障排查。 4. **数据备份与恢复**: - **备份策略...

    oracle_function用法

    * 不能使用 PL/SQL 的特有数据类型(boolean, table, record 等) * 不能在 SQL 语句中包含 INSERT, UPDATE 和 DELETE 语句 函数语法 Oracle 函数的语法如下: `CREATE OR REPLACE FUNCTION function_name (argu1...

    mytop 使用介绍 mysql实时监控工具

    - **其他统计**:包括查询类型分布(如SELECT, INSERT, UPDATE等)、平均查询时间、错误和警告等。 ### 相关工具比较 虽然 `mytop` 是一个非常有用的工具,但随着技术的发展,出现了更多功能更全面的 MySQL 监控...

Global site tag (gtag.js) - Google Analytics