`

oracle_存储过程分批次提交commit

 
阅读更多
create or replace procedure insert_screen_asn_pre(PAGE_NUMBER int)
as
type cursors is ref cursor;
curs cursors; 
V_SUP_NAME SCREEN_ASN_PRE.Sup_Name%type;
V_ASN_CODE SCREEN_ASN_PRE.Asn_Code%type;
V_ARRIVAL_PRE SCREEN_ASN_PRE.Arrival_Pre%type;
nums int:=0;
begin
  open curs for select sup.name,a.code,a.estimate_date from wms_asn a
            left join wms_organization sup on sup.id = a.supplier_id
             where a.status in ('OPEN','ACTIVE') and a.estimate_date is not null
             and not exists(select 1 from SCREEN_ASN_PRE sc where sc.asn_code = a.code)
             ;
   loop
     fetch curs into V_SUP_NAME,V_ASN_CODE,V_ARRIVAL_PRE;
     exit when curs%notfound;
     insert into SCREEN_ASN_PRE(TYPE,Sup_Name,ASN_CODE,ARRIVAL_PRE)
	 values('预到货预警',V_SUP_NAME,V_ASN_CODE,V_ARRIVAL_PRE);
     nums:= nums+1;
     --dbms_output.put_line('loop:'||nums);
     if nums >= PAGE_NUMBER
       then
         commit;
         nums:=0;
     end if;
   end loop;
   --dbms_output.put_line('end loop:'||nums);
   if nums >0 
     then
       commit;
       nums:=0;
   end if;
   --dbms_output.put_line('end if:'||nums);
   exception
     when others
       then
         dbms_output.enable(buffer_size => null);
         dbms_output.put_line(dbms_utility.format_error_backtrace);
         --dbms_output.put_line('sqlcode:'||sqlcode);
         dbms_output.put_line('sqlerrm:'||sqlerrm);
       rollback;
   close curs;
end;

 

begin
  insert_screen_asn_pre(3);
end;

--输出,假设curs值等于10
loop:1
loop:2
loop:3
loop:1
loop:2
loop:3
loop:1
loop:2
loop:3
loop:1
end loop:1
end if:0

 

分享到:
评论

相关推荐

    CSDN_Oracle杂志第二期1

    Oracle提供游标(Cursor)来处理查询结果集,特别是当需要在PL/SQL程序中分批次处理数据时。游标可以声明、打开、读取、关闭,甚至可以用于返回数据集到前端应用程序。例如: ```sql DECLARE CURSOR c_data IS ...

    通过JDBC连接oracle数据库的十大技巧

    通过调用`setAutoCommit(false)`方法关闭自动提交,开发者需手动调用`commit()`或`rollback()`来控制事务边界,从而显著提升系统响应速度和吞吐量。 ### 技巧三:在动态SQL或有时间限制的命令中使用Statement对象 ...

    OTL 编程指南

    - **otl_nocommit_stream**:非提交流,用于处理大批次数据时提高性能,不会在每次插入后自动提交。 otl_stream类的关键成员函数包括: - **构造函数**:初始化流对象,通常与特定的SQL查询相关联。 - **运算符**:...

    c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    太小的批次会导致更多的网络往返,而太大的批次可能会耗尽内存。 - **错误处理**:批量插入过程中可能遇到各种错误,如网络问题、权限问题等,需要适当地捕获和处理异常。 - **事务管理**:对于确保数据完整性的操作...

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    4. 考虑使用存储过程:对于复杂的数据处理,使用存储过程可以提高效率,因为它们在数据库服务器端执行,减少了网络传输。 5. 调整数据库配置:例如,增大InnoDB表的缓冲池大小,优化innodb_log_file_size等参数,以...

    JDBC_t_paper.zip

    4. 对大数据量的查询,考虑使用分页查询或存储过程。 六、JDBC与ORM框架 尽管JDBC提供直接操作数据库的能力,但在实际开发中,ORM框架如Hibernate和MyBatis等常被用来简化数据访问层的代码。它们提供了更高级别的...

    用jdbc管理数据库连接.rar_java 教程

    - 考虑使用存储过程和函数,提升性能和代码可读性。 通过这个“用jdbc管理数据库连接”的教程,你将掌握使用JDBC进行数据库操作的基本步骤和技巧,从而能够在实际项目中有效地管理数据库连接。同时,了解并遵循...

    java与各种数据库的连接与操作终极教程

    通过`Connection`对象的`setAutoCommit(false)`来禁用自动提交,然后在完成一组操作后用`commit()`提交,或者在发生错误时用`rollback()`回滚。 3. **预编译的PreparedStatement**: - `PreparedStatement`是`...

    GO语句还可用于多次执行T-SQL语句的批处理

    5. **批处理与存储过程**:在存储过程中,`GO`语句是无效的,因为存储过程本身就是一个独立的批处理单元。 6. **与其他工具的兼容性**:需要注意的是,`GO`语句不是SQL标准的一部分,所以它可能不被其他非微软的SQL...

    Hibernate批量处理海量数据的方法

    在Oracle中,可以创建一个存储过程,然后通过JDBC调用。 4. **批量处理与Session管理**:使用Hibernate API进行批量处理时,可以通过限制每次处理的数据量来优化。例如,每处理一定数量的对象后,立即调用`session....

    java链接数据库驱动

    `Connection`对象提供了事务控制方法,如`setAutoCommit()`用于开启或关闭自动提交,`commit()`和`rollback()`用于手动提交或回滚事务。 9.批处理 `Statement`的`addBatch()`方法可以添加多条SQL语句到批次,然后...

    jdbc.rar

    - `CallableStatement`用于调用存储过程。 4. **ResultSet对象**:当执行查询语句后,结果会返回一个`ResultSet`对象,可以遍历查询结果集。 5. **DatabaseMetaData对象**:提供了关于数据库的一些元数据信息,如...

    第一行代码Java源代码第14章课程代码Java数据库

    在Java中,可以使用Connection对象的commit()和rollback()方法来控制事务的提交和回滚。 6.批处理:对于大量相似的SQL操作,批处理可以提高效率。通过Statement对象的addBatch()方法添加SQL语句,然后调用...

    JDBC与Java数据库编程

    5. 使用CallableStatement处理存储过程。 八、连接池 像C3P0、DBCP、HikariCP这样的连接池库,可以帮助管理数据库连接,提高系统性能,避免了频繁创建和关闭连接的开销。 九、JDBC与ORM框架的结合 现代Java开发中...

    JDBC driver

    JDBC提供了对数据库事务的支持,可以通过Connection对象的`setAutoCommit()`方法关闭自动提交,然后手动调用`commit()`或`rollback()`方法控制事务的提交和回滚。 **五、批处理** 批处理允许一次性执行多个SQL语句...

    vaccination_app:Java数据库连接应用程序可与旨在管理疫苗接种程序的数据库进行交互

    在信息技术领域,数据库管理对于高效的数据存储和检索至关重要,尤其是在公共卫生领域,如疫苗接种管理。本项目,名为"vaccination_app",是一个基于Java语言开发的应用程序,它专为管理疫苗接种程序而设计,能够与...

Global site tag (gtag.js) - Google Analytics