组里有同事说有一个需要大批量跟新数据库中的功能,批量修改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编程中,批处理(Batch Processing)是一种优化技术,它能够显著提升数据库操作的性能,尤其是在处理大量数据时。本篇文章将深入探讨PL/SQL中的两种关键批处理语句:BULK COLLECT 和 FORALL,以及它们如何...
<update id="batchUpdate" parameterType="java.util.List"> ;" separator=";"> UPDATE test test = #{item.test} + 1 </set> WHERE id = #{item.id} </foreach> </update> ``` 在这个配置中,`collection`...
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 ...
使用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是Oracle公司提供的一个交互式查询和脚本执行工具,可以直接连接到Oracle数据库并执行SQL语句、PL/SQL块,还可以创建和运行批处理脚本。它的功能强大且灵活,适用于各种数据库管理和维护工作。 2. 批处理的...
Oracle数据库是世界上最流行的数据库管理系统之一,广泛用于企业级应用开发,...这涵盖了数据库基础、SQL语法、PL/SQL编程以及Java中的JDBC应用。理解和掌握这些知识点,对于进行企业级的Java数据库应用开发至关重要。
在Oracle中,创建用户涉及使用SQL命令如`CREATE USER`,通常在SQL*Plus或PL/SQL Developer等工具中执行。但在BAT脚本中,我们可以调用`sqlplus`命令行工具来执行SQL语句,例如: ```batch sqlplus / as sysdba ...
- **异常处理(Exception Handling)**:使用PL/SQL块捕获并处理异常情况。 - **日志与审计(Logging and Auditing)**:记录重要的数据库操作,以便于后期审计和故障排查。 4. **数据备份与恢复**: - **备份策略...
* 不能使用 PL/SQL 的特有数据类型(boolean, table, record 等) * 不能在 SQL 语句中包含 INSERT, UPDATE 和 DELETE 语句 函数语法 Oracle 函数的语法如下: `CREATE OR REPLACE FUNCTION function_name (argu1...
- **其他统计**:包括查询类型分布(如SELECT, INSERT, UPDATE等)、平均查询时间、错误和警告等。 ### 相关工具比较 虽然 `mytop` 是一个非常有用的工具,但随着技术的发展,出现了更多功能更全面的 MySQL 监控...