oracle 变量使用

本文介绍了Oracle数据库中SQL语句的解析过程,包括硬解析和软解析的概念及其区别。硬解析涉及复杂的步骤如制定执行路径和优化访问计划,消耗大量CPU资源且影响系统并发性。软解析则复用已存在的执行计划,提高效率。使用绑定变量可以促进软解析的发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在oracle 中,对于一个提交的sql语句,存在两种可选的解析过程, [color=red]一种叫做硬解析,一种叫做软解析。[/color]
[color=red]一个硬解析需要经解析,制定执行路径,优化访问计划等许多的步骤。[/color]硬解析不仅仅耗费大量的cpu,更重要的是会占据重要的门闩(latch)资源,严重的影响系统的规模的扩
大(即限制了系统的并发行),而且引起的问题不能通过增加内存条和cpu的数量来解决。之所以这样是因为门闩是为了顺序访问以及修改一些内存区域而设置的,这些内存区
域是不能被同时修改。[color=red]当一个Sql语句提交后,oracle会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进
行硬分析。[/color]
而[color=red]唯一使得oracle能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量而替代成变量。绑定变量能够使得每次提交的Sql语句都完全一样。[/color]


declare
name varchar2(255) ;
begin
name :='lan' ;
delete from t ;
commit ;
for i in 1..100
loop --使用变量来表示 using in 变量1,变量2
execute immediate 'insert into t(age,name) values(:y,:x)' using in i, name ;
end loop ;
end ;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值