oracle绑定变量

来源:互联网 发布:查询药品的软件 编辑:程序博客网 时间:2024/04/29 07:39

在oracle中,对于一个提交的sql语句,在在两种可靠的 解析过程,一种叫硬解析,一种叫软解析、

一个解析需要经解析,制定执行路径,优化访问计划等许多步骤,硬解析,不仅仅耗费大量的cpu,更重要的是会占据重要的们闩(lactch)资源,严重的影响系统的规模的扩大(即限制了系统的并必性)。而且引起的问题不能通过增加内存条和cpu的数量。之所以这样是因为门闩是为了顺序访问及修改一些内存区域而设置的,这些内存区域是不能被同时修改。当一个sql语句提交后,oracle会首先检查一下共享缓冲池(shared pool)里有没有与之完全相同的语句,如果有的话只须执行软分析即可,否则就得进行硬分析。

而唯一使得oracle能够重复利用执行计划的方法就是采用绑定变量。绑定变量的实质就是用于替代sql语句中的常量的替代变量。绑定变量能够使得每次提交的sql语句都完全一样。

1.sqlplus中如何使用绑定变量,可以通过variable来定义

SQL> select t.t_name from tb_1 t where t.t_id=2;
 
T_NAME
----------
wa
 
SQL> variable i number;
SQL> exec :i := 2;
 
PL/SQL procedure successfully completed
i
---------
2
 
SQL> select * from tb_1 t where t.t_id=:i;
 
                                   T_ID T_NAME
--------------------------------------- ----------
                                      2 wa
i
---------
2
 

 

2.define定义的不是变量而是字符串常量,通过define宣言之后,在通过&或者&&引用的时候不需要输入了,仅此而已。oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量。

 

 

 

3.oracle在解析sql时会把plsql中定义的变量转为绑定变量,另外从hard parse的数据量是其实也可以大致猜测oracle会把plsql中定义的变量转换为绑定变量处理。

 

 

原创粉丝点击