精华内容
下载资源
问答
  • oracle 存储过程批量提交
  • db2存储过程批量提交

    2020-12-29 21:57:54
    db2存储过程批量提交云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您...

    db2存储过程批量提交

    云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。

    选择云服务器ECS,您可以轻松构建具有以下优势的计算资源:

    无需自建机房,无需采购以及配置硬件设施。

    分钟级交付,快速部署,缩短应用上线周期。

    快速接入部署在全球范围内的数据中心和BGP机房。

    成本透明,按需使用,支持根据业务波动随时扩展和释放资源。

    提供GPU和FPGA等异构计算服务器、弹性裸金属服务器以及通用的x86架构服务器。

    支持通过内网访问其他阿里云服务,形成丰富的行业解决方案,降低公网流量成本。

    提供虚拟防火墙、角色权限控制、内网隔离、防病毒攻击及流量监控等多重安全方案。

    提供性能监控框架和主动运维体系。

    提供行业通用标准API,提高易用性和适用性。

    有关云服务器ECS的更多信息,参见 云服务器ECS帮助文档。

    展开全文
  • 存储过程中如何利用游标分批提交

    千次阅读 2014-11-11 13:08:37
    type temp_type is record(  temp_rowid varchar2(128),  temp_count integer);  type imw_type is table of temp_type;  imw_types imw_type;  cursor temp_cursor is ... select a.rowid, count(b.

    1. 建一个type,同时建一个游标 

    type temp_type is record(
        temp_rowid varchar2(128),
        temp_count integer);
      type imw_type is table of temp_type;
      imw_types imw_type;


      cursor temp_cursor is
        select a.rowid, count(b.userid)
          from im_ecusermsginfo_bak b, im_ecuserstatus a
         where b.userid = a.userid
           and b.imstatus <> '2'
         group by a.rowid;

     

    2.将游标打开,每1000条存进一次type中。再从type中获取数据,执行其他操作。

      open temp_cursor;
      loop
        fetch temp_cursor bulk collect
          into imw_types limit 1000;
       exit when imw_types.count = 0;
       forall i in 1 .. imw_types.count
          update im_ecuserstatus a
             set a.expmsgcnt = imw_types(i).temp_count
           where a.rowid = imw_types(i).temp_rowid;
       commit;
     end loop;
    close temp_cursor;

     

    3.exception要关游标

    exception
      when others then
        if temp_cursor%isopen then
          close temp_cursor;
        end if;
    展开全文
  • MySQL存储过程游标实现分批COMMIT

    千次阅读 2020-08-31 20:21:51
    存储过程分批COMMIT海量数据分批提交 海量数据分批提交 DROP PROCEDURE IF EXISTS proc_role; CREATE PROCEDURE proc_role ( ) BEGIN DECLARE done int DEFAULT FALSE; DECLARE v_cnt int DEFAULT 0; DECLARE v_...

    MySQL存储过程分批COMMIT

    海量数据分批提交

    DROP PROCEDURE IF EXISTS proc_role;
    CREATE PROCEDURE proc_role ( )
    BEGIN
    	DECLARE done int DEFAULT FALSE;
    	DECLARE v_cnt int DEFAULT 0;
    	DECLARE v_rolename varchar(32);
    	DECLARE cur1 CURSOR for SELECT vrolename from tt;
    	/* 定义退出循环规则 */
    	DECLARE CONTINUE HANDLER for not found set done=TRUE;
    	/* 开启事务,即关闭MySQL自动提交 */
    	SET autocommit = 0;
    	
    	OPEN cur1;
    	read_loop:loop
    		FETCH cur1 INTO v_rolename;
    		IF
    			done THEN
    				LEAVE read_loop;			
    		END IF;
    		/* 开始计数 */
    		SET v_cnt = v_cnt + 1;				
    		insert into role(rolename) VALUES(v_rolename);		 
    	/* 下面是每1000条记录提交一次,可以根据业务情况调整 */
    			 if
    			 mod(v_cnt,1000)=0 then 
    /*			 SELECT SLEEP(5);	断点检测*/
    	commit; END if;	
    	END LOOP;
    	CLOSE cur1;	
    /* 因为整除1000之后还有最后一批数据未提交,所以再进行一次COMMIT */
    	COMMIT;
    END;
    

    各位技术牛好!这个存储过程虽然实现了分批提交,但是感觉效率有些低,是不是还有优化的空间,望不吝赐教,谢谢!

    展开全文
  • ORACLE INSERT INTO SELECT *FROM 分批提交例子
  • [Oracle存储过程批量插入1000万数据][以及如何改变一个dbf文件的大小][Oracle存储过程批量插入1000万数据以及如何改变一个dbf文件的大小]--改变一个dbf文件的大小select * from dba_data_files;--先查找alter ...

    [Oracle存储过程批量插入1000万数据]

    [以及如何改变一个dbf文件的大小]

    [Oracle存储过程批量插入1000万数据以及如何改变一个dbf文件的大小]

    --改变一个dbf文件的大小

    select * from dba_data_files;--先查找

    alter database datafile 'F:\PROGRAM FILES\ORACLEDATABASE\ORCL\IDEA.DBF' autoextend on next 100M maxsize unlimited;

    注:F:\RDS_DATAFILE\RDS0714.DBF 是已存在的文件

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as idea_service

    SQL> EXECUTE TEST_INSERT;

    begin test_insert; end;

    ORA-01861: 文字与格式字符串不匹配

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 15

    ORA-06512: 在 line 2

    SQL> EXECUTE TEST_INSERT;

    begin TEST_INSERT; end;

    ORA-01861: 文字与格式字符串不匹配

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 15

    ORA-06512: 在 line 2

    SQL> EXECUTE TEST_INSERT;

    begin TEST_INSERT; end;

    ORA-01861: 文字与格式字符串不匹配

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 15

    ORA-06512: 在 line 2

    SQL> EXECUTE TEST_INSERT;

    begin TEST_INSERT; end;

    ORA-01861: 文字与格式字符串不匹配

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 15

    ORA-06512: 在 line 2

    SQL> EXECUTE TEST_INSERT;

    begin TEST_INSERT; end;

    ORA-06592: 执行 CASE 语句时未找到 CASE

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 17

    ORA-06512: 在 line 2

    SQL> EXECUTE TEST_INSERT;

    begin TEST_INSERT; end;

    ORA-01654: 索引 IDEA_SERVICE.IDX_SEND_RECORD_TIME2 无法通过 16 (在表空间 IDEA 中) 扩展

    ORA-06512: 在 "IDEA_SERVICE.TEST_INSERT", line 15

    ORA-06512: 在 line 2

    SQL> select * from dba_data_files;

    FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS

    -------------------------------------------------------------------------------- ---------- -------------------------

    改变dbf文件的大小如下:

    C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 4 USERS 5242880 640 AVAILABLE 4 YES 3435972198 4194302 160 5177344 632 ONLINE

    C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 3 SYSAUX 293601280 35840 AVAILABLE 3 YES 3435972198 4194302 1280 293535744 35832 ONLINE

    C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 2 UNDOTBS1 1001390080 122240 AVAILABLE 2 YES 3435972198 4194302 640 1001324544 122232 ONLINE

    C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 1 SYSTEM 513802240 62720 AVAILABLE 1 YES 3435972198 4194302 1280 513736704 62712 SYSTEM

    F:\PROGRAM FILES\ORACLEDATABASE\ORCL\HISTDB.DBF 5 IDEA_SERVICE 251658240 30720 AVAILABLE 5 YES 3435972198 4194302 1280 251592704 30712 ONLINE

    F:\PROGRAM FILES\ORACLEDATABASE\ORCL\IDEA.DBF 6 IDEA 524288000 64000 AVAILABLE 6 NO 0 0 0 524156928 63984 ONLINE

    6 rows selected

    SQL> alter database datafile 'F:\PROGRAM FILES\ORACLEDATABASE\ORCL\IDEA.DBF' autoextend on next 100M maxsize unlimited;

    Database altered

    SQL> EXECUTE TEST_INSERT;

    PL/SQL procedure successfully completed

    SQL> EXECUTE TEST_INSERT;

    PL/SQL procedure successfully completed

    SQL>

    相应的插入1000万条数据的存储过程如下:

    CREATE OR REPLACE PROCEDURE Test_Insert

    AS

    MyCounter int;

    temp int;

    status int;

    phone int;

    BEGIN

    MyCounter:=1; /*设置变量*/

    temp:=1;

    phone:=18277710000;

    status:=1;

    LOOP

    insert into send_record( ID,SERVICE_ID,DEAL_ID,RECVER,SENDER,FEE_MAN,MSG_TYPE,SMS_CONTENT,SERVICE_CODE,FEE,TIME,WAY_ID,STATUS,ERR_CODE,STORE_FILE,LINK_ID,WAY_ERROR,IS_READ ) values (SJBZ_SEND_RECORD_SEQ.NEXTVAL,100,370202846,phone,10658088,phone,0,null,'HELP',0,sysdate,'10239',status,0,'20110105/1/506099932',null,'MK:0000',null );

    --提交

    CASE

    WHEN MyCounter = 1000000 THEN

    commit;

    WHEN MyCounter = 2000000 THEN

    commit;

    WHEN MyCounter = 3000000 THEN

    commit;

    WHEN MyCounter = 4000000 THEN

    commit;

    WHEN MyCounter = 5000000 THEN

    commit;

    WHEN MyCounter = 6000000 THEN

    commit;

    WHEN MyCounter = 7000000 THEN

    commit;

    WHEN MyCounter = 8000000 THEN

    commit;

    WHEN MyCounter = 9000000 THEN

    commit;

    WHEN MyCounter = 10000000 THEN

    commit;

    ELSE

    DBMS_OUTPUT.put_line('Johnny test insert table!');

    END CASE;

    EXIT WHEN MyCounter=10000000 ;--当变量为1000万时跳出循环

    MyCounter:=MyCounter+1;

    temp:=temp+1;

    phone:=phone+1;

    --判断

    --if (1000000

    --status:=1;

    --elseif (2000000<=MyCounter<4000000) then

    --status:=2;

    --elseif (4000000<=MyCounter<6000000) then

    --status:=3;

    --elseif (7000000<=MyCounter<9000000) then

    --status:=4;

    --else status:=0;

    --endif

    END LOOP;

    END Test_Insert;

    展开全文
  • MySQL批量插入数据,分批提交笔记

    千次阅读 2019-07-12 13:12:33
    前言:之前就接触过MySQL的批量...1.使用普通的分批提交,每次提交一万条记录,耗时如下: 2.使用高速提交,关闭MySQL服务器的预处理,开启批量添加: 耗时如下: 总结:两种情况下,开起了高效批量提交,...
  • 问题一:在不考虑性能损失的情况下,DB2存储过程分批提交可以尝试触发器调用存储过程提交的方法,下面是一个例子。此过程基本逻辑如下:当对表有INSERT操作时,触发存储过程COMMIT_TRIGGER,由COMMIT_TRIGGER调用...
  • oracle_存储过程分批次提交commit

    千次阅读 2015-09-08 12:26:27
    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;...
  • 批量insert造数据和分批提交删除的例子create or replace procedure myj_insert(maxrecords in number :=100) isi number :=1begin for i in 1..a loop Insert into ADZONES (ADZONEID, NAME, FORMAT, TRANSTYPE...
  • Oracle Insert分批提交

    千次阅读 2019-08-16 11:40:25
    oracle中分批提交insert 事务,以防止redo占用太多可以分批提交事务:以下是三种不同的pl/sql体: 1、编写一个简单的PL/SQL块来模拟逐行提交的情况,注意观察执行时间。 我们的目标是将t_ref表中的数据全部插入到t...
  • mysql批量提交的优化

    2021-01-27 20:15:07
    .背景用户修改布局时,需要批量更新mysql的xxxx_layout_xxxx表。批量操作的数据量是2-30条/次。...过程如下。经测试,批量更新30条记录的时间是35ms。由于数据在mysql服务端中会有内存缓存,批量更...
  • Batch提交Batch提交是用一个Connection来对若干个SQL进行一次性、批量提交给MySQL处理。但有一个问题是,如果某个SQL挂了而其他的并不会受影响,这样就无法保证原子性,只能再封装一层Transaction来实现。同时,...
  • 测试目的:验证总记录数下,每次提交多条记录,与一条记录提交一次,性能的差异。测试步骤:1、创建测试表:create table ...2、分批次提交事务过程:drop procedure if exists tcommit;delimiter $$create procedur...
  • create or replace procedure insert_screen_asn_pre(PAGE_NUMBER int)astype cursors is ref cursor;curs cursors;V_SUP_NAME SCREEN_ASN_PRE.Sup_Name%type;V_ASN_CODE SCREEN_ASN_PRE.Asn_Code%type;...
  • 创建存储过程,执行drop procedure if exists u_head_and_low_pro;delimiter //create procedure u_head_and_low_pro()beginDECLARE n int DEFAULT 0;WHILE n < 1000 DOinsert into activity(data_code, coupon_...
  • postgresql使用存储过程批量插入数据

    千次阅读 2020-11-26 14:02:47
    create or replace function creatData2() returns boolean AS $BODY$ declare ii integer; begin II:=1; //插入两万条 FOR ii IN 0..20000 LOOP //插入语句 INSERT INTO t01_author (id, name, gender, ...
  • 1.使用循环追条插入方法15:54:40 SQL&gt; declare 2 v_cnt number := 0; 3 begin 4 for i in 1000001 .. 9999999 loop 5 --定义从 1000001开始,9999999结束 6 in...
  • 看完这章你会学习到以下内容:用MOD求余方法,对即将插入的数据进行划分提交.COMMIT的用法.基本程序块:For 变量 in 游标 LoopIF MOD(SQL%ROWCOUNT,100000) = 0 THENCOMMIT;END IF;COMMIT; -- 剩余100000行的数据再...
  • Oracle Delete分批提交

    千次阅读 2015-12-10 10:40:14
    1、Oracle Delete操作会产生redo log,undo log,即使delete 语句中加上...为了不使undo表空间被撑爆,可能需要分批提交,以下是分批提交语句: declare  cnt number(10):=0;  i number(10):=0;  begin  s
  • oracle 采用存储过程批量提交

    千次阅读 2008-07-11 20:37:00
    批量提交时,可将数据封装成数组,传入存储过程,执行批量提交。例如:批量添加一批用户到数据库的user 表。Tb_user User_id(number) User_name(varchar2(50))
  • 存储过程如下(去重): DELIMITER // /*tblname 动态控制表名*/ CREATE PROCEDURE create_imsi(IN tblname varchar(200)) begin declare age int default 1; declare done int(1) default 0; declare v_imsi ...
  • 情景是数据库里有一系列的post(新闻类),现在想根据post表中有的post_date(时间),view(浏览数量),或者post_like表的likeCount进行排序,并分批读取数据,limit在25比如说post_date:SELECT post.*, user.user_...
  • declare begin for i in (select * from person) loop Update person Set xxx...存储过程for in loop 根据括号中的循环条件,来遍历查出的结果,update根据where条件进行更新提交,达到每一次更新都可以利用上一条的...
  • 在Oracle数据库中,不是提交越频繁越好。恰恰相反,批量提交可以得到更好的性能。这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别。最后再给出一种可以极大改变性能的方法。1.创建...
  • CREATE OR REPLACE PROCEDUREproc_msw_strsqlISiINT;BEGINi :=1;WHILE i<=100000LOOPINSERTINTOREP_DATAF_07_0(SELECT REP_DATAF_07_ITEMID_SEQ.nextval ASPKID,ORGAN_ID,REPORT_ID,ITEM_ID,REPORT_DATE,CRE...
  • 因此总是力图找出一种过程性的方法,通过循环来完成这个任务。这是一种不好的存在误导性的开发习惯,最好的办法是按业务的要求以适当的频度提交,并且相应地设置undo大小。通常频繁的提交并不会更快,一般地在一个...
  • 最后想出的办法是,新建结存表,新建存储过程,然后把数据预先结存到表中。 通过一个存储过程,来结存2015年全年的数据,每次结存一个月的数据。 在结存1、2、3月时,每个月在2分钟左右,但从4月份开始,结存一个...
  • 存储过程之merge into更新数据

    千次阅读 2019-08-25 10:08:07
    完整存储过程: create or replace procedure p_s_yx_bz is begin --同步编组车次信息从原始到记录表总 merge into t_s_yx_bz t using t_s_yx_bz_s t1 on (t1.date_ = t.date_ and t1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,846
精华内容 1,538
关键字:

存储过程分批提交