关于Oracle存储过程中是否需要写commit的问题

oracle存储过程commit问题 首先是存储过程代码,没有commit;C#调用代码测试结果成功写入模拟报错,但是不进行rollback同样成功写入所以在捕获异常后,第一时间要先rollback 阅读详情
AI摘要

本文探讨了在存储过程中是否及何时使用Commit的问题。指出在不同的应用场景下,Commit的使用方式不同,并强调了合理安排Commit频率的重要性,以提高数据库操作效率。

是否需要在存储过程中写commit主要要依据需求:

(1) 如果是不需要在存储过程中进行提交,而是由调用程序负责提交或者回滚,那么不需要在存储过程中commit或者rollback.毕竟spring框架已经可以帮助我们自动实现事务的控制;

(2) 如果不想由调用程序负责提交或者回滚,那么就应该在存储过程中进行commit或rollback;
另外,如果是纯后台数据库开发,一定要写.只是写的时机同样是分为两种,一种是写在过程里面;另一种是写在调用存储过程之后.
而之所以要写commit的原因是,Oracle的默认事务级别是READ COMMITED;默认情况下,Oracle是不会自动提交的,需要手动提交才ok.

注意:

并不是每个INSERT/UPDATE语句后都需要COMMIT一次.因为数据量很大的话,这样效率会很差.而每次执行完十几万条INSERT/UPDATE后做一次COMMIT,也是不可取的;
比较习惯用的方法是:每做完5000条或者1w条,或者2w条,做一次COMMIT,效率一定比“每个INSERT/UPDATE语句后都COMMIT一次”快。但是具体5000条快,还是1w条快,还是2w条快,需要根据业务需求确定一个合适的量。
所以,如果使用游标的话,可以通过设置变量的方法,来实现每处理一定的行数后手动commit提交事务.

参考链接:
(1) 存储过程里使用Commit的火候
(2) ORACLE数据库事务隔离级别

Spring Authorization Server自定义密码模式:突破标准OAuth2限制,实现MFA与复杂业务集成 OAuth 2.0授权框架是构建现代应用安全体系的基石,其密码模式(Resource Owner Password Credentials Grant)提供了一种直接的资源所有者凭证交换令牌的机制。该模式的核心原理是客户端收集用户密码并直接向授权服务器请求访问令牌,适用于受信任的客户端场景。在技术价值上,它简化了某些传统应用的OAuth集成流程。然而,标准实现往往难以满足复杂的现实业务需求,例如需要集成多因素认证(MFA)、对接外部LDAP目录服务或执行自定义密码加密校验等场景。Spring Authori 阅读详情

相关推荐

别再只盯着版图画了!聊聊CMOS工艺里那个‘看不见的手’:STI应力(LOD效应)对模拟电路的实际影响

本文深入探讨了CMOS工艺中STI应力(LOD效应)对模拟电路设计的实际影响,揭示了这一隐形变量如何导致电流镜匹配偏差等常见问题。通过分析应力产生的物理机制、空间分布特性,以及提供伪器件设计、版图布局优化等实用解决方案,帮助工程师有效管理STI应力效应,提升电路性能。文章还探讨了FinFET工艺下的新挑战及机器学习在应力优化中的应用前景。

weixin_42656416的博客 359

存储过程里使用Commit

方式1: Insertinto...; Commit; Insertinto...; Commit; ... 方式2: 推荐使用这种 Insertinto...; ... Insertinto...; ... Commit;

王鹤霖的专栏 三人行必有我师 3752

10-Oracle 23 ai Vector Search 概述和参数

企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation :RAG)功能,RAG能够将LLM的生成能力与知识库的精准资料库进行检索结合,将大模型部署在内部同时将私有的数据进行LLM的检索避免泄露企业专用的数据同时提高的准确性。于是如何将数据存入向量数据库以及向量查询等这些基本功能变得必备和重要。

远方的专栏 1295

谨慎使用Oracle存储过程中的commit

目录 一、前言 二、创建测试示例 1创建demo表 2插入数据 3创建存储过程 4创建java函数 三、测试 1java函数正确执行,可以看到数据正确插入 2java函数抛出异常 四、总结 一、前言 测试Oracle存储过程中的commit对程序执行结果的影响。 二、创建测试示例 1创建demo表 CREATE TABLE "SCOTT"."DEMO" ( "ID" NUMBER NOT NULL , "DESC" VARCHAR2(255 BYTE) ) 2插入

阿瑟与非 3110

sysbench测试系统内存

系统内存读写测试方法,报告解读

m0_61066945的博客 3018

2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇

我们可以看到,目前配置基本完成了,现在有两个错,一个是Chrome没安装,这个自己安装就可以了,如果不需要WEB测试也不影响开发,另一个是Simulator还没安装,这个主要是安装的时间太长了,也就是上面的这一步。这里要注意,这个下载安装会比较慢,有的载会特别卡造成安装失败,最好的办法是挂一个VPN,保证安装完成,不过这个可以在以后单独进行安装。至此,基本的安装完毕,好多人会以为Xcode就OK了,其实还没有,我们还缺少命令行工具包,这个在安装完Flutter以后进行设置。

weixin_48803304的博客 1412

mysql存储过程有commit和没有commit区别

如果存储过程中没有执行commit,那么spring容器一旦发生了事务回滚,存储过程执行的操作也会回滚。如果存储过程执行了commit,那么数据库自身的事务此时已提交,这时即使在spring容器中托管了事务,并且由于其他原因导致service代码中产生异常而自动回滚,但此存储过程是不会回滚,因为数据自身的事务已在存储过程执行完毕前提交了, 也就是说此时spring回滚对存储过程的操作是无效的了。

kongkong的专栏 1246

KMD 核心功能模块——命令提交与调度:Ring Buffer 与硬件引擎交互

《KMD 中的中断与同步机制——从 Fence 到 Timeline Semaphore 的深度解析》GPU 需要持续接收命令,但硬件执行是流式处理。Ring Buffer 作为。导致 CVE-2022-1234(GPU 挂起),修复后强制检查。:命令提交延迟从 50μs 降至 5μs(20 倍提升)。,CPU 通过写入该地址更新指针(避免直接操作寄存器)。,实现 CPU 与 GPU 的高效协同。),GPU 读指针更新是硬件自动完成的。(通过硬件状态机),实现真正的零等待。AMDGPU 驱动曾因。

amy_mhd的博客 83

Oracle存储过程是否需要些Commit及调用方式

1、关于Oracle存储过程中是否需要写commit的问题 https://blog.youkuaiyun.com/javaee_sunny/article/details/77508502 2、Oracle中执行存储过程call和exec区别 https://blog.youkuaiyun.com/zengmingen/article/details/51364691...

2282

详细推导波特图增益和相位曲线

最近因为项目需求,在回看波特图方面的内容。大三那会,《自动控制原理》这本书里面就讲过这些东西,但是那时候总感觉学这些没啥用,反正以后也用不到,对这种课程的重视度不是很高。 工作后发现,只要你从事的是和本专业相关的工作,大学学过的很多理论课程在后面大概率都会用到。曾经那些我们在学校以为用不上的东西,熟不知在后面用处还多着呢。所以啊,仅仅只是我们的以为而已! 现在还在学校的同学,对待《自动控制理论》、《信号与系统》、《通信原理》这样的核心专业课,建议还是好好学习一下,认真听听课。哪怕是考试完以后就会忘掉,但当我

D_Katter的博客 3936

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

oracle什么时候要commit,Oracle什么时候需要Commit

写完DML语句(update, insert, delete)后,需要手动COMMIT,如果没有COMMIT,更新的内容会被保存到内存中,而不是提交到数据库中,将不会被其他Session(对话)看见。其他对话看到的是更新前的数据。当用户退出对话时,Oracle才会自动Commit。而DDL语句(create, alter, drop, truncate),自带COMMIT,所以不需要写COMMIT...

weixin_29093017的博客 5127

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Oracle存储过程的commit和rollback,sqlerrm

最近ld说要把之前写得好好的一套存储过程说改成java,什么意思听起来不对劲呀。意思是不要用proc了,改成mybatis的sql,达到屏蔽差异性的效果。。。哈哈不是这么回事啊,首先proc里肯定用到了很多db的内置函数,这个不同的db都不一样的。比如oracle中的wm_concat,mysql中的group_concat,msserver的wmsys.wm_concat。另外自定义的函数是定义

蒲公英的约定 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

oracle存储过程+commit吗,Oracle存储过程中的commit和savepoint

$$LANGUAGE plpgsql;不支持存储过程,只支持function,在function之中,不支持rollback ,commit, savepointQuestion 1: does pg/Oracle 11gCREATE OR REPLACE PROCEDURE skeletonISBEGINbegininsert into a values(10);begininsert into...

weixin_32207033的博客 1405

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ORACLE子存储过程中的COMMIT语句引发的问题

今天花了一天时间在恢复表数据,就是因为在子存储过程中出现了个commit语句,简单描述如下: SP_ADD_PRODUCT中调用了两个子存储过程SP_SUB_RMV_PRODUCT和SP_SUB_ADD_PRODUCT,其中SP_SUB_RMV_PRODUCT会将好几张表中的数

Socrates的专栏 7367

LightDB commit/rollback在匿名块,函数,存储过程中的行为

LightDB支持oracle pl/sql以及开源postgresql pl/pgsql两种过程性(增强)语言。本文主要讲解LightDB plorasql与KingBase和Oracle事务的典型用法及行为对比。

weixin_40730091的博客 1770

在ORACLE存储过程中创建临时表

create procedure proasstr varchar2(100);beginstr:=CREATE GLOBAL TEMPORARY TABLE TABLENAME (   COL1  VARCHAR2(10),   COL2  NUMBER) ON COMMIT PRESERVE ROWS ;execute immediate str;    --使用动态SQL语句来执行end

我走我的路 4397

oracle存储过程commit怎么写,oracle数据库存储过程,带commit,rollback

一,数据库中存储过程(1)建立包create or replace package t_allpackage istype mycursor is ref cursor;end t_allpackage;(2)存储过程主体create or replace procedure tuser_all(user_no in varchar2,mycur out t_allpackage.mycursor...

weixin_33272631的博客 1092

oracle 频繁commit,[转载]有关COMMIT太频繁问题解决方案

1.问题描述在之前测试人员生成的ADDM报告,当导入数据的时候,数据库存在大量的提交和回退事件。查找结果 1: 提交和回退受影响的是 .51 个活动会话, 占总活动的 58.55\%。-------------------------------在执行 COMMIT 和 ROLLBACK 操作时, 等待 "日志文件同步" 事件消耗了大量数据库时间。建议案 1: 应用程序分析估计的收益为 .51 个...

weixin_42515136的博客 2357

oracle 存储过程 savepoint,Oracle存储过程中的commit 和 savepoint

CREATE OR REPLACE PROCEDURE skeletonISBEGINbegininsert into a values(10);begininsert into a values(11);end;end;begin--savepoint ps;insert into a values(20);commit;end;begininsert into a values(30);end...

weixin_36168927的博客 818

oracle commit 使用方法,Oracle Form中COMMIT的概述及使用技巧

Oracle Form中COMMIT的概述及使用技巧1. COMMIT_FORM和COMMIT都对form和数据库进行提交。针对form上面的数据变动提交到后台数据库,同时数据库提交数据。2. DO_KEY('COMMIT_FORM')它会首先执行KEY-COMMIT触发器里面的代码,如果没有这个触发器,则会做COMMIT_FORM一样的操作。3. FORMS_DLL('COMMIT')只针对代码...

weixin_39854070的博客 1219

oracle的commit详解

oracle的commit详解 它执行的时候,你不会有什么感觉。commit在数据库编程的时候很常用,当你执行DML操作时,数据库并不会立刻修改表中数据,这时你需要commit,数据库中的数据就立刻修改了,如果在没有commit之前,就算你把整个表中数据都删了,如果rollback的话,数据依然能够还原。听我这么说,你或许感觉commit没什么用,其实不然。当你同时执行两条或两条以上的sql语句...

冯大才子的博客 1205

Oracle 触发器调用带commit的存储过程

触发器调用带commit的存储过程会报错。 1、解决办法:在触发器里面加自治事务 CREATE OR REPLACE TRIGGER TRIGGER_NAME AFTER INSERT OR UPDATE OR DELETE OF xxx ON TABLE_NAME declarePRAGMA AUTONOMOUS_TRANSACTION; --自治事务 BEGIN         PRO...

iteye_14989的博客 1335
上一篇: ORACLE数据库事务隔离级别
下一篇: 判断是否为连续的数字拼接而成的字符串
javaee_sunny
博客等级 码龄11年 90粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值